《Java抽象类、接口.ppt》由会员分享,可在线阅读,更多相关《Java抽象类、接口.ppt(18页珍藏版)》请在三一办公上搜索。
1、抽象类、接口,2023/7/6,抽象类、接口,2,抽象类、接口,抽象类、抽象方法接口接 口与抽象类,2023/7/6,抽象类、接口,3,抽象类(类的更高程次的抽象),在上一章,我们可以创建子子类的对象,也可以创建超类的对象,但从继承层次由下而上,类变得更通用也更抽象,甚至只具备概念上的意义,而并非需要其特定的实例对象,这样更高抽象程次的超类我们把它叫做抽象类。public abstract class Car.,2023/7/6,抽象类、接口,4,继承层次,2023/7/6,抽象类、接口,5,抽象类特点,抽象类不能被实例化 Car myCar;/right!myCar=new Car();/E
2、rror!抽象类可以包含抽象方法(abstract method只在超类中声明,而在其子类中重写实现)public abstract void accelerate();public abstract void decelerate();/声明抽象类的子类也可以是抽象类继承抽象类的非抽象类,则必须实现超类中的抽象方法,2023/7/6,抽象类、接口,6,抽象类,思考A.非抽象超类能包含抽象方法吗?为什么?思考B.抽象类可以包含非抽象方法吗?为什么?应该怎么设计思考C.抽象类必须包含抽象方法吗?思考D.继承抽象类的抽象类可以实现超类中的抽象方法吗?,2023/7/6,抽象类、接口,7,抽象类示例
3、(Car.java BadCar.java),public class BadCar extends Car2Upon compilation you should receive the following error:BadCar.java:1:BadCar should be declared abstract;it does not define decelerate()in Car2 public class BadCar extends Car2 1 error,2023/7/6,抽象类、接口,8,接 口,在一个继承体系中不可避免会出现这种情况,方法在类层次中越堆越高以致其可以为越
4、来越多的子类可用。接口的设计避免了这个问题。它们把方法或方法系列的定义从类层次中分开。与类层次无关的类实现相同的接口是可行的。这是实现接口的真正原因所在。,2023/7/6,抽象类、接口,9,接 口特点,多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口接口可以扩展 当实现一个接口方法时,该方法它必须声明成public。接口定义可以是default或者publicinterface if1public void aaa1();void aaa2();/public int ii=99;/public static final public interface if2public vo
5、id aaa1();void aaa2();int ii=99;,2023/7/6,抽象类、接口,10,接口的定义(Serviceable.java),public interface Serviceable public void changeOil();public void tuneUp();,2023/7/6,抽象类、接口,11,接口的实现(Porsche2.java),public class Porsche2 extends Car implements Serviceable.public void tuneUp()System.out.println(Tuning up a p
6、orsche.);public void changeOil()System.out.println(Changing a porsches oil.);.,2023/7/6,抽象类、接口,12,针对接口编程(Mechanic2.java),public class Mechanic2 public void service(Serviceable s)s.changeOil();s.tuneUp();public static void main(String args)Porsche porsche=new Porsche();Pinto pinto=new Pinto();Mechani
7、c1 mechanic=new Mechanic1();mechanic.service(porsche);mechanic.service(pinto);,2023/7/6,抽象类、接口,13,扩展接口,在扩展接口中添加新的抽象方法public interface Serviceable1 extends Serviceablepublic void test();,2023/7/6,抽象类、接口,14,实现接口与继承超类,2023/7/6,抽象类、接口,15,接 口作用总结,通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系。通过接口指明多个类需要实现的方法。通过接口了解对象的交互
8、界面,而无需了解对象所对应的类。(针对接口编程!),2023/7/6,抽象类、接口,16,接 口与抽象类,如果功能与对象自身密切相关,则在超类中使用抽象方法。如果该功能只是对象的辅助行为,则应该使用接口。如果该功能可被全局性的应用到其他无关对象,则可使用接口(应考虑使用AOP方式)。,2023/7/6,抽象类、接口,17,掌握重点,抽象类的概念抽象类有哪些特点为什么要使用接口接口与抽象类的使用理解针对接口编程,2023/7/6,抽象类、接口,18,课后练习,定义一个Person抽象类(至少包含一个抽象方法),并修改上一章的Employee作为Person的子类并实现抽象方法。扩展一个Person的新子类Student,并实现抽象方法。定义一个用来做对象比较的接口,并在Person的子类中实现。,