如果不行的话
class ClassA {}
class ClassB extends ClassA {}
class ClassC extends ClassA {}
public class Test{
public static void main(String[] args) {
ClassA p0 = new ClassA();
ClassB p1 = new ClassB();
ClassC p2 = new ClassC();
ClassA p3 = new ClassB();
ClassA p4 = new ClassC();
}
}
这样编写是没错误的
那。。。这是为啥子?
我补充了一下问题,能帮忙看一下嘛?
追答你说的是这样啊,这个其实不是不是父类调用子类的构造方法,是父类对象的引用指向一个子类的对象,这是可以的,因为按照JAVA继承的设计,子类是可以完全代替父类的,所以父类对象的引用指向一个子类对象是完全可以的,这里就牵扯到JAVA的多态概念了,到时候你调用父类的方法的时候,实际上会调用子类重写的对应方法。
我补充了一下问题,能帮忙看一下吗?