パブリックフィールドを実装する必要がある抽象クラスがあります。このフィールドはインターフェイスまたは別の抽象クラスです。
このようなもの:
public abstract class GenericContainer {
public GenericChild child;
}
public abstract class GenericChild {
public int prop1=1;
}
public abstract class SpecialChild extends GenericChild {
public int prop1=2;
}
今、私は別の特殊なクラスコンテナを持っています:
public abstract class SpecialContainer extends GenericContainer {
public SpecialChild child=new SpecialChild(); //PAY ATTENTION HERE!
}
Javaを使用すると、これをコンパイルできます。のフィールドが自動的にのフィールドをオーバーロードしているchild
と想像してみてください...質問は次のとおりです。子の自動「オーバーロード」は発生しますか?SpecialContainer
child
GenericContainer
そして、もっと重要な質問ですが、私がこのような別のクラスを持っている場合:
public class ExternalClass {
public GenericContainer container=new SpecialContainer();
public int test() {
return container.child.prop1
}
}
test()
1または2を返しますか?私は、ジェネリックまたはスペシャルと呼ばGenericContainer
れるコンテナフィールドを意味しますか?prop1
そして、特別なprop1がStringとして宣言された場合はどうなりますか(はい、この場合もjavaでコンパイルできます)。
ありがとう!