欢迎来到天天文库
浏览记录
ID:59604918
大小:53.50 KB
页数:18页
时间:2020-11-15
《第08讲---Java抽象类、接口.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、抽象类、接口抽象类、接口抽象类、抽象方法接口接口与抽象类7/29/20212抽象类、接口抽象类(类的更高程次的抽象)在上一章,我们可以创建子子类的对象,也可以创建超类的对象,但从继承层次由下而上,类变得更通用也更抽象,甚至只具备概念上的意义,而并非需要其特定的实例对象,这样更高抽象程次的超类我们把它叫做抽象类。publicabstractclassCar{...}7/29/20213抽象类、接口继承层次7/29/20214抽象类、接口抽象类特点抽象类不能被实例化CarmyCar;//right!myCar=newCar();//Error!抽象类可以包含抽象
2、方法(abstractmethod只在超类中声明,而在其子类中重写实现)publicabstractvoidaccelerate();publicabstractvoiddecelerate();//声明抽象类的子类也可以是抽象类继承抽象类的非抽象类,则必须实现超类中的抽象方法7/29/20215抽象类、接口抽象类思考A.非抽象超类能包含抽象方法吗?为什么?思考B.抽象类可以包含非抽象方法吗?为什么?应该怎么设计思考C.抽象类必须包含抽象方法吗?思考D.继承抽象类的抽象类可以实现超类中的抽象方法吗?7/29/20216抽象类、接口抽象类示例(Car.java
3、BadCar.java)publicclassBadCarextendsCar2{}Uponcompilationyoushouldreceivethefollowingerror:BadCar.java:1:BadCarshouldbedeclaredabstract;itdoesnotdefinedecelerate()inCar2publicclassBadCarextendsCar2^1error7/29/20217抽象类、接口接口在一个继承体系中不可避免会出现这种情况,方法在类层次中越堆越高以致其可以为越来越多的子类可用。接口的设计避免了这个问题。
4、它们把方法或方法系列的定义从类层次中分开。与类层次无关的类实现相同的接口是可行的。这是实现接口的真正原因所在。7/29/20218抽象类、接口接口特点多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口接口可以扩展当实现一个接口方法时,该方法它必须声明成public。接口定义可以是default或者publicinterfaceif1{publicvoidaaa1();voidaaa2();//publicintii=99;//publicstaticfinal}publicinterfaceif2{publicvoidaaa1();voidaaa2
5、();intii=99;}7/29/20219抽象类、接口接口的定义(Serviceable.java)publicinterfaceServiceable{publicvoidchangeOil();publicvoidtuneUp();}7/29/202110抽象类、接口接口的实现(Porsche2.java)publicclassPorsche2extendsCarimplementsServiceable{...publicvoidtuneUp(){System.out.println("Tuningupaporsche...");}publicvo
6、idchangeOil(){System.out.println("Changingaporsche’soil...");}...}7/29/202111抽象类、接口针对接口编程(Mechanic2.java)publicclassMechanic2{publicvoidservice(Serviceables){s.changeOil();s.tuneUp();}publicstaticvoidmain(String[]args){Porscheporsche=newPorsche();Pintopinto=newPinto();Mechanic1mech
7、anic=newMechanic1();mechanic.service(porsche);mechanic.service(pinto);}}7/29/202112抽象类、接口扩展接口在扩展接口中添加新的抽象方法publicinterfaceServiceable1extendsServiceable{publicvoidtest();}7/29/202113抽象类、接口实现接口与继承超类Car+accelerate()+decelerate()<>Serviceable+tuneUp()+changeOil()Porsche2+ac
8、celerate()+decelerate()+tu
此文档下载收益归作者所有