java 父类 子类 类型转换【父类不能转为子类】

               

java 父类不能转为子类 

package tao.test;class Base { public String str = "hello Base..."; public void hello(){  System.out.println(str); }}class Sub extends Base{ public String str = "hello Sub..."; public void hello(){  System.out.println(str); }}public class BaseSubTest{ public static void main(String[] args) {  Base base = new Base();  base.hello();    // hello Base...  System.out.println(base.str);// hello Base...    Sub sub = new Sub();  // hello Sub...  sub.hello();    // hello Sub...  System.out.println(sub.str);    Base bs = new Sub();    System.out.println(bs.getClass());//class tao.test.Sub  bs.hello();     // hello Sub...  System.out.println(bs.str); // hello Base...    Sub s = (Sub) bs;   s.hello();     // hello Sub...  System.out.println(s.str);  // hello Sub...    //Sub sb = (Sub) new Base();   //System.out.println(sb.getClass());  // error  //sb.hello();  error   }}

 Base bs = new Sub(); 

本人理解: new Sub(); 的过程中  先去执行sub的 父类的构造方法 , 再去执行sub的构造方法

 所以可以这么转型 

而 Sub sb = (Sub) new Base();  仅仅执行sub的父类Base 的构造方法 

所以。。。。。。。。。。。。。。 

故而转型失败。。。。。。。 

仅仅是揣测!!!

 

           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值