abstract
クラスのコンストラクタを直接呼び出すことでオブジェクトを作成することはできません。 abstract
クラスのコンストラクタは、派生クラスからのみ呼び出すことができます。したがって、はと思われます。抽象クラスのコンストラクタはprotected
またはpackage-private(パッケージ内の派生クラスへのコンストラクタの使用を制限する例外的なケースは後者です)でなければなりません。しかし、Javaではabstract
クラスのコンストラクタをpublic
にすることができます。抽象クラスのpublicコンストラクタには十分な理由があります
は、それがむしろprotected
またはパッケージプライベートよりも、public
するabstract
クラスのコンストラクタを宣言する便利である任意の事情はありますか?
これは質問「Abstract class constructor access modifier」のかなり重複していない。はっきりあなたはpublic
するコンストラクタを宣言することができます。私はいつでもが良いかどうかを知りたいと思っています。理由があります。そこにはないと私には思われます。私はそれがC# has a similar peculiarityを参照してください。
コンストラクタは、オブジェクトの「作成」とは関係ありません。これは、オブジェクトを「作成」しているときに呼び出される単なるメソッドです。したがって、抽象クラスは、(Subclassを介して)抽象クラスのインスタンスを作成する際に呼び出されるpublicコンストラクタを持つことができ、そのコンストラクタメソッドでは、メンバ変数を初期化するコードを記述します。 http://stackoverflow.com/questions/260666/can-an-abstract-class-have-a-constructor?lq=1 –
コンストラクタはコンストラクタチェインで使用できる 'private'でもかまいません。 –