0

親クラスと子クラスがあり、子クラスのコンストラクターを呼び出すとします。子コンストラクターの引数と親コンストラクターの引数の両方を持ち、親を初期化するために super( ) を使用する必要がありますか。そして、これは、親コンストラクターをオーバーロードした場合、子のコンストラクターのそれぞれに一致するコンストラクターが必要になることを意味します...したがって、2つの親コンストラクターがある場合

parent(int a);
parent(int a,int b);

および 2 つの子コンストラクター

child(int c);
child(int c,int d);

child(int a) を実際には2つのコンストラクターの形式にする必要があります

child(int a, int c) 
{
super(a)

c = this.c;
}

child ( int a, int b, int c)
{
super(a,b)

c = this.c;
 }

と have child(int c, int d) には実際には2つのコンストラクターがあります

child(int a, int c, int d)
{
super(a);

c = this.c;
d = this.d;
}

それとも合格できますか

child(int a,int b, int c, int d)
{
super(a,b);

c = this.c;
d = this.d;
}

}

4

2 に答える 2

2

親コンストラクターは常に呼び出されます。明示的でない場合、暗黙的になります。親コンストラクターを呼び出すパラメーターを定義するのはあなた次第です。

親がデフォルトのコンストラクター (パラメーターを必要としないコンストラクター) を提示しない場合は、サブクラスから明示的に呼び出す必要があります。

child(int a, int b, int c, int d)親クラスのコンストラクターを呼び出す場合にコメントしたように、一般的なコンストラクターを持つことを禁止するものは何もありませんsuper(a,b)

親クラスにいくつかのコンストラクターがある場合、必ずしもそれらをサブクラスに「伝播」する必要があるとは限りません。

コンストラクター チェーンに関する適切なテキストがここにあります

于 2012-06-16T00:52:28.387 に答える
0

Its up to you that how many overloaded version of construtor you want to write but keep in mind that every construtor of child class calls its super() with no arg implicitly if in parent no arg construtor is not there it will give you compile time error .but if yor are making in call explicitly you can call any supar construtor .

于 2012-06-16T03:46:49.497 に答える