第08讲-抽象类、接口_第1页
第08讲-抽象类、接口_第2页
第08讲-抽象类、接口_第3页
第08讲-抽象类、接口_第4页
第08讲-抽象类、接口_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

抽象类、接口抽象类、接口抽象类、抽象方法接口接口与抽象类1/5/20242抽象类、接口抽象类〔类的更高程次的抽象〕在上一章,我们可以创立子子类的对象,也可以创立超类的对象,但从继承层次由下而上,类变得更通用也更抽象,甚至只具备概念上的意义,而并非需要其特定的实例对象,这样更高抽象程次的超类我们把它叫做抽象类。 publicabstractclassCar { ... }1/5/20243抽象类、接口继承层次1/5/20244抽象类、接口抽象类特点抽象类不能被实例化 CarmyCar; //right! myCar=newCar(); //Error!抽象类可以包含抽象方法〔abstractmethod只在超类中声明,而在其子类中重写实现〕 publicabstractvoidaccelerate(); publicabstractvoiddecelerate();//声明抽象类的子类也可以是抽象类继承抽象类的非抽象类,那么必须实现超类中的抽象方法1/5/20245抽象类、接口抽象类思考A. 非抽象超类能包含抽象方法吗?为什么?思考B. 抽象类可以包含非抽象方法吗?为什么?应该怎么设计思考C. 抽象类必须包含抽象方法吗?思考D. 继承抽象类的抽象类可以实现超类中的抽象方法吗?1/5/20246抽象类、接口抽象类例如〔Car.javaBadCar.java〕

publicclassBadCarextendsCar2 { } Uponcompilationyoushouldreceivethefollowingerror: BadCar.java:1:BadCarshouldbedeclaredabstract;itdoesnotdefinedecelerate() inCar2 publicclassBadCarextendsCar2 ^1error1/5/20247抽象类、接口接口在一个继承体系中不可防止会出现这种情况,方法在类层次中越堆越高以致其可以为越来越多的子类可用。接口的设计防止了这个问题。它们把方法或方法系列的定义从类层次中分开。与类层次无关的类实现相同的接口是可行的。这是实现接口的真正原因所在。

1/5/20248抽象类、接口接口特点多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口接口可以扩展

当实现一个接口方法时,该方法它必须声明成public。接口定义可以是default或者publicinterfaceif1{publicvoidaaa1();voidaaa2();//publicintii=99;//publicstaticfinal}publicinterfaceif2{publicvoidaaa1();voidaaa2();intii=99;}1/5/20249抽象类、接口接口的定义〔Serviceable.java〕

publicinterfaceServiceable{ publicvoidchangeOil(); publicvoidtuneUp(); }

1/5/202410抽象类、接口接口的实现〔Porsche2.java〕publicclassPorsche2extendsCarimplementsServiceable{ ... publicvoidtuneUp(){ System.out.println("Tuningupaporsche..."); } publicvoidchangeOil(){ System.out.println("Changingaporsche’soil..."); } ...}1/5/202411抽象类、接口针对接口编程〔Mechanic2.java〕

publicclassMechanic2{ publicvoidservice(Serviceables){ s.changeOil(); s.tuneUp(); } publicstaticvoidmain(String[]args){ Porscheporsche=newPorsche(); Pintopinto=newPinto(); Mechanic1mechanic=newMechanic1(); mechanic.service(porsche); mechanic.service(pinto); } }1/5/202412抽象类、接口扩展接口 在扩展接口中添加新的抽象方法

publicinterfaceServiceable1extendsServiceable{ publicvoidtest(); }

1/5/202413抽象类、接口实现接口与继承超类Car+accelerate()+decelerate()<<interface>>Serviceable+tuneUp()+changeOil()Porsche2

+accelerate()+decelerate()+tuneUp()+changeOil()Pinto2

+accelerate()+decelerate()+tuneUp()+changeOil()Moto

+tuneUp()+changeOil()1/5/202414抽象类、接口接口作用总结

通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系。

通过接口指明多个类需要实现的方法。

通过接口了解对象的交互界面,而无需了解对象所对应的类。〔针对接口编程!〕1/5/202415抽象类、接口接口与抽象类如果功能与对象自身密切相关,那么在超类中使用抽象方法。如果该功能只是对象的辅助行为,那么应该使用接口。如果该功能可被全局性的应用到其他无关对象,那么可使用接口〔应考虑使用AOP方式〕。1/5/202416抽象类、接口掌握重点抽象类的概念抽象类有哪些特点为什么要使用接口接口与抽象类的使用理解针对接口编程1/5/202417

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论