抽象クラスはコンストラクターを持つことができますか?
はい、抽象クラスはコンストラクターを持つことができます。抽象クラスのコンストラクターを使用すると、共通フィールドの初期化とそのサブクラス全体にわたるクラス不変条件の適用が可能になります。
抽象クラスでコンストラクターを使用するにはどうすればよいですか?
例を考えてみましょう。以下:
abstract class Product { int multiplyBy; public Product(int multiplyBy) { this.multiplyBy = multiplyBy; } public int multiply(int val) { return multiplyBy * val; } } class TimesTwo extends Product { public TimesTwo() { super(2); } } class TimesWhat extends Product { public TimesWhat(int what) { super(what); } }
ここで、抽象クラス Product は、 multiplyBy フィールド。具象クラス TimesTwo および TimesWhat は、このコンストラクターを継承し、multiplyBy の特定の実装または値を提供します。
抽象クラスのコンストラクターの目的:
注: 抽象クラスは、すべてのインスタンス変数が Final である場合にのみ、デフォルト (引数なし) コンストラクターを持つことができます。ただし、サブクラスで初期化要件を強制するために、抽象クラスでコンストラクターを明示的に提供することがベスト プラクティスです。
以上が抽象クラスにはコンストラクターを含めることができますか?また、それらはどのように使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。