我有一个应该实现公共字段的抽象类,这个字段是一个接口或另一个抽象类。
像这样的东西:
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 允许我在这种情况下也可以编译)怎么办?
谢谢!