最新java向上转型与向下转型.doc

最新java向上转型与向下转型.doc

ID:62981762

大小:138.50 KB

页数:11页

时间:2021-07-23

最新java向上转型与向下转型.doc_第1页
最新java向上转型与向下转型.doc_第2页
最新java向上转型与向下转型.doc_第3页
最新java向上转型与向下转型.doc_第4页
最新java向上转型与向下转型.doc_第5页
资源描述:

《最新java向上转型与向下转型.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、精品资料java向上转型与向下转型........................................精品资料java向上转型与向下转型........................................精品资料java向上转型与向下转型java转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。什么叫父类引用指向子类对象,且听我慢慢道来.从2个名词开始说起:向上转型(upcasting)、向下转型(downcasting).举个例子:有2个类,Father是父类,Son类继

2、承自Father。Fatherf1=newSon();   //这就叫upcasting(向上转型)//现在f1引用指向一个Son对象Sons1=(Son)f1;   //这就叫downcasting(向下转型)//现在f1还是指向Son对象第2个例子:Fatherf2=newFather();Sons2=(Son)f2;       // 出错,子类引用不能指向父类对象........................................精品资料你或许会问,第1个例子中:Sons1=(Son)f

3、1;问什么是正确的呢。很简单因为f1指向一个子类对象,Fatherf1=newSon();子类s1引用当然可以指向子类对象了。而f2被传给了一个Father对象,Fatherf2=newFather();子类s1引用不能指向父类对象。总结:1。父类引用指向子类对象,而子类引用不能指向父类对象。2。把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转换。      如:Fatherf1=newSon();3。把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制

4、转换。   如:f1就是一个指向子类对象的父类引用。把f1赋给子类引用s1即Sons1=(Son)f1;           其中f1前面的(Son)必须加上,进行强制转换。一、向上转型。........................................精品资料通俗地讲即是将子类对象转为父类对象。此处父类对象可以是接口。1,向上转型中的方法调用。看下面代码:[java] 1.package com.wensefu.others;  2.public class Animal {  3.    

5、public void eat(){  4.        System.out.println("animal eatting...");  5.    }  6.}  7.class Bird extends Animal{  8.    public void eat(){  9.        System.out.println("bird eatting...");  10.    }  11.    public void fly(){  12.        System.out.print

6、ln("bird flying...");  13.    }  14.}  ........................................精品资料1.class Main{  2.    public static void main(String[] args) {  3.        Animal b=new Bird(); //向上转型   4.        b.eat();   5.        //! error: b.fly(); b虽指向子类对象,但此时丢失fly()

7、方法   6.        dosleep(new Male());  7.        dosleep(new Female());  8.    }  9.    public static void dosleep(Human h) {  10.        h.sleep();  11.    }  12.}  package com.wensefu.others;  1.public class Human {  2.    public void sleep() {  3.        

8、System.out.println("Human sleep..");  4.    }  5.}  ........................................精品资料1.class Male extends Human {  2.    @Override  3.    public void sleep() {  4.        System.out.println("Male s

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

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

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