タグ付けされた質問 「abstract」

abstractは、多数のオブジェクト指向プログラミング言語で共有されるキーワードです。メソッドとクラスは、アプリケーションロジックの完全な実装が含まれておらず、拡張する必要があることを示すために、抽象としてマークすることができます。抽象クラスはインスタンス化できず、サブクラスに統一されたインターフェイスを提供する目的や、サブクラスごとに再実装する必要のない共通メソッドの実装を提供する目的で使用できます。


16
抽象クラスをインスタンス化できますか?
あるインタビューで、「抽象クラスをインスタンス化できるかどうか」と尋ねられました。 私の返事は「いいえ、できません」でした。しかし、面接官は私に「間違った、私たちはできる」と言った。 私はこれについて少し議論しました。それから彼は私にこれを自分で家で試すように言った。 abstract class my { public void mymethod() { System.out.print("Abstract"); } } class poly { public static void main(String a[]) { my m = new my() {}; m.mymethod(); } } ここでは、クラスのインスタンスを作成し、抽象クラスのメソッドを呼び出しています。誰か私にこれを説明してもらえますか?面接中に私は本当に間違っていましたか?
573 java  oop  class  object  abstract 

12
Pythonで抽象クラスを作成することは可能ですか?
Pythonでクラスまたはメソッドを抽象化するにはどうすればよいですか? 私は__new__()そのように再定義しようとしました: class F: def __new__(cls): raise Exception("Unable to create an instance of abstract class %s" %cls) しかしG、次のFように継承するクラスを作成すると、 class G(F): pass Gその場合、スーパークラスの__new__メソッドを呼び出すため、インスタンス化もできません。 抽象クラスを定義するより良い方法はありますか?

9
Java抽象インターフェース
例を考えてみましょう(Javaでコンパイルされます) public abstract interface Interface { public void interfacing(); public abstract boolean interfacing(boolean really); } インターフェイスを抽象的に「宣言」する必要があるのはなぜですか?抽象インターフェースに適用される他のルールはありますか? 最後に:abstract時代遅れの場合、なぜJavaに含まれているのですか?抽象インターフェースの歴史はありますか?
197 java  interface  abstract 

3
リフレクションによってJavaクラスが抽象かどうかを判断する方法
Jarファイルのクラスを調べて、抽象的でないクラスを見つけたいと思っています。クラスをインスタンス化してInstantiationExceptionをトラップすることでこれを解決できますが、一部のクラスは起動が重いため、パフォーマンスに影響があります。Class.javaドキュメントでisAbstract()のようなものを明確に見つけることができません。
184 java  class  abstract 

8
Kotlinでデータクラスを拡張する
データクラスは、Javaの昔ながらのPOJOに取って代わるようです。これらのクラスが継承を可能にすることはかなり期待できますが、データクラスを拡張する便利な方法はありません。私が必要なのはこのようなものです: open data class Resource (var id: Long = 0, var location: String = "") data class Book (var isbn: String) : Resource() 上記のコードは、component1()メソッドの衝突により失敗します。dataアノテーションを1つのクラスだけに残しても、機能しません。 おそらく、データクラスを拡張する別のイディオムがありますか? UPD:子の子クラスdataのみに注釈を付ける場合がありますが、注釈はコンストラクタで宣言されたプロパティのみを処理します。つまり、すべての親のプロパティを宣言してopenオーバーライドする必要があります。 open class Resource (open var id: Long = 0, open var location: String = "") data class Book ( override var id: Long = …

4
なぜJavaインターフェイスメソッドを抽象として宣言するのでしょうか。
今日のEclipseの「プルインターフェース」リファクタリング機能を使用して、既存のクラスに基づくインターフェースを作成しました。新しいインターフェイスのすべての新しいメソッドを「抽象」メソッドとして作成するためのダイアログボックス。 そのメリットは何でしょうか? インターフェイスメソッドを抽象として宣言することが許可されているという事実は、特に推奨されていない、言語の余分で無害な機能であると思いました。 Eclipseがそのようなスタイルをサポートするのはなぜですか、または誰かが自発的にサポートすることを選択するのはなぜですか? 明確化:インターフェースメソッドが抽象的である理由を尋ねているのではありません。それらがインターフェイスにある場合でもそれらはとにかく抽象的であるため、なぜそれらを明示的に抽象としてマークすることを選択するのかと私は尋ねています。

8
PHP 5.2+が抽象静的クラスメソッドを許可しないのはなぜですか?
PHP 5.2で厳格な警告を有効にした後、元々厳格な警告なしで作成されたプロジェクトからの一連の厳格な標準警告が表示されました。 厳密な標準:静的関数 Program :: getSelectSQL()は Program.class.inc で抽象であってはなりません 問題の関数は、抽象親クラスProgramに属しており、TVProgramなどの子クラスに実装する必要があるため、抽象staticと宣言されています。 私はこの変更への言及をここで見つけました: 抽象静的クラス関数を削除しました。見落としのため、PHP 5.0.xおよび5.1.xでは、クラスで抽象静的関数を使用できました。PHP 5.2.x以降では、インターフェースのみがそれらを使用できます。 私の質問は次のとおりです。なぜPHPに抽象静的関数を使用すべきではないのか、誰かが明確に説明できますか?
121 php  oop  static  abstract 



6
C#インターフェイスメソッドが抽象または仮想として宣言されていないのはなぜですか?
インターフェイスのC#メソッドは、virtualキーワードを使用せずに宣言され、overrideキーワードを使用せずに派生クラスでオーバーライドされます。 これには理由がありますか?私はそれが単に言語の便宜であると思います、そして明らかにCLRはカバーの下でこれを処理する方法を知っています(メソッドはデフォルトでは仮想ではありません)が、他の技術的な理由はありますか? 以下は、派生クラスが生成するILです。 class Example : IDisposable { public void Dispose() { } } .method public hidebysig newslot virtual final instance void Dispose() cil managed { // Code size 2 (0x2) .maxstack 8 IL_0000: nop IL_0001: ret } // end of method Example::Dispose メソッドがvirtual finalILで宣言されていることに注意してください。

5
フィールドを抽象化しないのはなぜですか?
抽象メソッドを持つことができるように、Javaクラスが抽象フィールドを持つことができないのはなぜですか? 例:同じ抽象基本クラスを拡張する2つのクラスがあります。これら2つのクラスには、エラーメッセージであるString定数を除いて、同じメソッドが含まれています。フィールドが抽象的である場合、この定数を抽象化し、メソッドを基本クラスに引き上げることができます。代わりに、getErrMsg()この場合はStringを返す抽象メソッドを作成し、2つの派生クラスでこのメソッドをオーバーライドして、メソッド(現在は抽象メソッドを呼び出す)をプルアップする必要があります。 そもそもなぜフィールドを抽象化できないのでしょうか。Javaはこれを可能にするように設計されているのでしょうか?
99 java  methods  field  abstract 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.