1:“子类可以强转成父类” ArrayList al = new ArrayList(), (List)al
2: "父类不能强转成子类" Object o = new Object(); (List)o 这是错的
3: 父类强转成子类有两个情况下是可以的
(1)父类指向子类引用 List l = new ArrayList(); (AarrayList)l
(2) 父类是由子类强转成的
ArrayList l = new ArrayList;
ArrayList con = new ArrayList;
con.add(l);
(l)con.get(0);
因为这里get到的object当初是由(object)l转成的,所以父类可以转子类所以我认为强转过程非常像是“职责隐藏”,比如用父类引用指向子类,就是“子类仅仅体现出父类特征,而将私有特征隐藏的过程”反过来则是释放。另外有人问这样的问题:子类继承父类,在事例化子类的时候,是不是也实例化了父类?如果没有事例化父类,又怎么可能用super来运行用父类中才有的代码呢?我也找不到很好的答案。
2: "父类不能强转成子类" Object o = new Object(); (List)o 这是错的
3: 父类强转成子类有两个情况下是可以的
(1)父类指向子类引用 List l = new ArrayList(); (AarrayList)l
(2) 父类是由子类强转成的
ArrayList l = new ArrayList;
ArrayList con = new ArrayList;
con.add(l);
(l)con.get(0);
因为这里get到的object当初是由(object)l转成的,所以父类可以转子类所以我认为强转过程非常像是“职责隐藏”,比如用父类引用指向子类,就是“子类仅仅体现出父类特征,而将私有特征隐藏的过程”反过来则是释放。另外有人问这样的问题:子类继承父类,在事例化子类的时候,是不是也实例化了父类?如果没有事例化父类,又怎么可能用super来运行用父类中才有的代码呢?我也找不到很好的答案。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货