抽象クラスにコンストラクタはありますか? 質問する

抽象クラスにコンストラクタはありますか? 質問する

抽象クラスにコンストラクターを持たせることはできますか?

もしそうなら、それはどのように、どのような目的で使用できますか?

ベストアンサー1

はい、抽象クラスにはコンストラクターを含めることができます。次の点を考慮してください。

abstract class Product { 
    int multiplyBy;
    public Product( int multiplyBy ) {
        this.multiplyBy = multiplyBy;
    }

    public int mutiply(int val) {
       return multiplyBy * val;
    }
}

class TimesTwo extends Product {
    public TimesTwo() {
        super(2);
    }
}

class TimesWhat extends Product {
    public TimesWhat(int what) {
        super(what);
    }
}

スーパークラスProductは抽象クラスであり、コンストラクタを持ちます。具象クラスにTimesTwoは、値 2 をハードコードするだけのコンストラクタがあります。具象クラスには、TimesWhat呼び出し元が値を指定できるようにするコンストラクタがあります。

抽象コンストラクターは、クラスのセットアップに必要な最小フィールドなどのクラス制約または不変条件を強制するために頻繁に使用されます。

注意: 親抽象クラスにはデフォルト (または引数なし) のコンストラクターがないため、サブクラスで使用されるコンストラクターは親コンストラクターを明示的に呼び出す必要があります。

おすすめ記事