当前位置: 技术问答>java相关
小弟问个傻傻的问题。
来源: 互联网 发布时间:2015-10-30
本文导语: 声明时是Object对象,为什么不能造型转换成自己定义的类的对象? 是不是超类对象可以造型转换成为子类对象? Object不是所有的类的超类吗? | 我来说,假设 A is B's superclass 可以有一下声...
声明时是Object对象,为什么不能造型转换成自己定义的类的对象?
是不是超类对象可以造型转换成为子类对象?
Object不是所有的类的超类吗?
是不是超类对象可以造型转换成为子类对象?
Object不是所有的类的超类吗?
|
我来说,假设 A is B's superclass
可以有一下声明:
A my = new A();
A my = new B();
但不能有 B my2 = new A();
因为子类一般具有比父类更多的信息,即父类需要的子类都有
所以子类可以不加任何显式转换地到父类,
而基于同样理由,反过来则不成立
所以你定义成Object obj = new Object();
你就不能这样: (MyClass)obj;
而,Object obj = new MyClass(); 情况下,
(MyClass)obj就是允许的。
可以有一下声明:
A my = new A();
A my = new B();
但不能有 B my2 = new A();
因为子类一般具有比父类更多的信息,即父类需要的子类都有
所以子类可以不加任何显式转换地到父类,
而基于同样理由,反过来则不成立
所以你定义成Object obj = new Object();
你就不能这样: (MyClass)obj;
而,Object obj = new MyClass(); 情况下,
(MyClass)obj就是允许的。