欢迎来到天天文库
浏览记录
ID:44912085
大小:16.37 KB
页数:7页
时间:2019-11-04
《java向上转型与向下转型》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、java向上转型与向下转型java转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。什么叫父类引用指向子类对象,且听我慢慢道来.从2个名词开始说起:向上转型(upcasting)、向下转型(downcasting).举个例子:有2个类,Father是父类,Son类继承自Father。Fatherf1=newSon(); //这就叫upcasting(向上转型)//现在f1引用指向一个Son对象Sons1=(Son)f1; //这就叫downcasting(向下转型)//现在f1还是指向Son对象第2个
2、例子:Fatherf2=newFather();Sons2=(Son)f2; // 出错,子类引用不能指向父类对象你或许会问,第1个例子中:Sons1=(Son)f1;问什么是正确的呢。很简单因为f1指向一个子类对象,Fatherf1=newSon();子类s1引用当然可以指向子类对象了。而f2被传给了一个Father对象,Fatherf2=newFather();子类s1引用不能指向父类对象。总结:1。父类引用指向子类对象,而子类引用不能指向父类对象。2。把子类对象直接赋给父类引用叫upcasting向上
3、转型,向上转型不用强制转换。 如:Fatherf1=newSon();3。把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转换。 如:f1就是一个指向子类对象的父类引用。把f1赋给子类引用s1即Sons1=(Son)f1; 其中f1前面的(Son)必须加上,进行强制转换。一、向上转型。通俗地讲即是将子类对象转为父类对象。此处父类对象可以是接口。1,向上转型中的方法调用。看下面代码:[java] viewplaincopyprint?1.package c
4、om.wensefu.others; 2.public class Animal { 3. 4. public void eat(){ 5. System.out.println("animal eatting..."); 6. } 7.} 8.class Bird extends Animal{ 9. 1. public void eat(){ 2. System.out.println("bird eatting..."); 3.
5、 } 4. 5. public void fly(){ 6. 7. System.out.println("bird flying..."); 8. } 9.} 10.class Main{ 11. 12. public static void main(String[] args) { 13. 14. Animal b=new Bird(); //向上转型 15. b.eat();
6、 16. //! error: b.fly(); b虽指向子类对象,但此时丢失fly()方法 17. dosleep(new Male()); 18. dosleep(new Female()); 19. } 20. 21. public static void dosleep(Human h) { 22. h.sleep(); 23. } 24.} 25. pac
7、kage com.wensefu.others; 1.public class Human { 2. public void sleep() { 1. System.out.println("Human sleep.."); 2. } 3.} 4.class Male extends Human { 5. @Override 6. public void sleep() { 7. System.out.println("Male sleep..");
8、 8. } 9.} 10.class Female extends Human { 11. @Override 12. public void sleep() { 13. System.out.println("Female sleep.."); 14. } 15.} 16.
此文档下载收益归作者所有