java转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象
什么叫父类引用指向子类对象,且听我慢慢道来
从两个名词说起:向上转型(upcasting)、向下转型(downcasting)
举个例子:有两个类,Father是父类,Son类继承自Father。
Father f1 =new Son()
; //这就叫upcasting(向上转型
)
//现在f1
引用一个指向
一个Son
对象
Son s1 = (Son)f1
; //这个叫downcasting(向下转型
)
//现在f1还是指向Son对象
第二个例子:
Father f2 =new Father();
Son s2=(Son)f2;
//出错,子类引用不能直接指向父类对象
你或许会问,在第一个例子中:Son s1=(Son)f1;为什么是正确的呢?
很简单因为f1指向指向一个子类对象,Father f1=new Son();子类s1引用当然可以指向子类对象了。
而f2被传给了一个Father对象,Father f2=new Father();子类s1引用不能指向父类对象。
总结:
1.父类引用指向子类对象,子类引用不能指向父类对象。
2.把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型。
如Father f1=new Son();
3.把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转型。
如f1就是一个指向子类对象的父类引用,把f1赋给子类引用s1 即Son s1=(Son)f1;
其中f1前面的(Son)必须添加,进行强制转换。
java向上转型 向下转型(upcasting downcasting)
最新推荐文章于 2024-08-08 16:57:26 发布