java向上转型与向下转型

java向上转型与向下转型

ID:44912085

大小:16.37 KB

页数:7页

时间:2019-11-04

java向上转型与向下转型_第1页
java向上转型与向下转型_第2页
java向上转型与向下转型_第3页
java向上转型与向下转型_第4页
java向上转型与向下转型_第5页
资源描述:

《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.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。