欢迎来到天天文库
浏览记录
ID:37798589
大小:234.28 KB
页数:58页
时间:2019-05-31
《Java(第8章面向对象(多态性for reading)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Java编程基础Java编程基础——对象的多态杨巍yangwei@mail.neu.edu.cnJava编程基础多态性多态性方法的重载overload与覆写override对象的多态性具有继承关系的引用类型变量才能相互转换向上转型Upcasting子类对象父类对象向下转型DownwardCast父类对象子类对象2Employeeemployee=newManager();//legalemployee.department="Sales";//illegalPolDemo1.javaJava编程基础Upcast
2、ing上溯造型向上转型Upcasting子类对象父类对象程序会自动完成向上转型损失了子类新扩展的属性和方法,仅剩下父类中声明过的属性和方法如果对象发生了向上转型关系后,所调用的方法一定是被子类覆盖过的方法4Java编程基础Upcasting上溯造型Upcastingtest.java5Java编程基础“overriding”privatemethods“overriding”privatemethods——private方法能否被重写privatemethodishiddenfromthederivedclass
3、onlynon-privatemethodsmaybeoverriddenoverridingprivatemethods,whichgeneratesnocompilerwarningsPrivateOverride.javaStaticPolymorphism.javaJava编程基础DownwardCast向下转型DownwardCast父类对象子类对象必须明确地指明要转型的子类类型子类子类对象=(子类)父类实例向下转型的前提条件必须是曾经做过向上转型的对象,才能再向下转型PolDemo2.java7Java编
4、程基础instanceof操作符instanceof操作符判断一个对象到底是哪个类的实例返回boolean类型对象instanceof类PolDemo3.java8Java编程基础instanceof操作符在进行对象的向下转型关系前,最好先判断后再进行相应的转换操作publicvoiddoSomething(Employeee){if(einstanceofManager){//ProcessaManager}elseif(einstanceofEngineer){//ProcessanEngineer}else{//Pr
5、ocessanyothertypeofEmployee}}9Java编程基础CovariantreturntypesMethodOverride重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型Covariantreturntypesanoverriddenmethodinaderivedclasscanreturnatypederivedfromthetypereturnedbythebase-classmethodCovariantReturn.javaJava编程基础Java编程基础——抽象类杨巍yangw
6、ei@mail.neu.edu.cnJava编程基础抽象类Abstractclasses抽象类Abstractclasses专门用来做父类模板——设计者依据抽象类的格式来修改并创建新的类不能直接由抽象类创建对象抽象类必须被继承12Java编程基础抽象类抽象类的定义格式abstractclass抽象类名称{属性;访问权限返回值类型方法名称(参数){[return返回值;]}访问权限abstract返回值类型方法名称(参数);}13Java编程基础抽象类抽象方法abstract关键字只有方法名,没有方法体——只需声明
7、而不需要实现抽象类abstract关键字不能被实例化为对象包含抽象方法方法的类必须是抽象类抽象类必须被继承,子类必须覆写override抽象类中的全部抽象方法14packagech08.abstract1;Java编程基础abstractclassA{publicstaticfinalStringFLAG="China";privateStringname="yangwei";publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name
8、=name;}publicabstractvoidprint();}packagech08.abstract1;publicclassBextendsA{publicvoidprint(){System.out.println("FLAG="+FL
此文档下载收益归作者所有