我已阅读 this-Downcasting is not possible但不知道为什么实际上这是不可能的,下面是代码片段
class Parent {
}
public class Inherit extends Parent{
public static void main(String[] args) {
Parent parent = new Inherit() //No Error
Inherit sub = new Parent(); // Type mismatch error
}
}
我的问题是为什么创建子类类型的父对象是可能的(Parent a = new Inherit())
但为什么反向是不可能的?实际原因是什么(类型不匹配
除外)
最佳答案
一个简单的例子:
class Parent {
public String name;
}
class Inherit extends Parent {
public int age;
}
所以每个 Inherit
都有一个名字,但是 Parent
没有年龄。如果您调用以下内容会怎样:
Inherit sub = new Parent();
sub.age; // ERROR: because a parent has no age
因此不可能将父对象分配给子类引用,因为可能会丢失一些东西,就像@OH GOD SPIDERS 指出的那样。
关于java - 为什么不能创建子类类型的父类的对象,但可以反向创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46642702/