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