1、第4章 面向对象编程 (多态、抽象类、接口),一、多态,多态是面向对象的又一特点。 多态分为编译时多态和运行时多态 1. 编译时多态:由方法重载实现的静态多态见教材P114例4-23,2. 运行时多态:子类继承父类时产生子类的对象可以申明为父类的对象(向上转型)若父类是Father类,子类是Children类,可以这样声明:Father child;child=new Children();P115 例4-24 多态性使用之二(运行时多态),二、抽象类,1.定义 类前有abstract修饰时,称为抽象类。 声明格式如下:abstract class 类名称 成员变量;成员方法; 2.特点(1)
2、抽象类不能被实例化,实例的建立通常由其子类去完成。(2)抽象类中可以没有抽象方法,但包含有抽象方法的类一定是抽象类。,抽象方法:声明格式如下:abstract 返回值类型 方法名(参数列表);如:abstract void study(); (3)抽象类中的抽象方法必须全部由子类覆盖,否则子类继续被申明为抽象类 (4)抽象类及抽象方法不能被final修饰,三、最终类和最终方法,类前有关键字final时,表示该类是最终类 声明格式如下:final class 类名称成员变量;成员方法; 最终类不能作为父类被其它类继承,方法前有关键字final时,表示该方法是最终方法 声明格式如下: final
3、返回值类型 方法名(参数列表) 方法体; abstract、 final不能同时修饰类、成员方法,否 则将导致编译错误,说出下列程序语句错误原因:,1.public final class Aclass B extends A 2.public abstract final class A 3.public abstract class Kabstract final void aa();,五、接口,1、接口的申明 publicinterface 接口名 extends 父接口名列表 常量定义方法定义,说明: (1)接口中的成员变量都必须设置初始值,且默认为public、final、stati
4、c型。 (2)接口中定义的方法默认都是public、abstract类型的抽象方法。 如:interface Animalint i=5;/默认为public static finalvoid modelOfAction();/默认为public abstract ,(3)当接口由public修饰时,表示该接口是公共接口,可以被所有的类和接口使用,否则只能被同一包中的其它接口和类使用。 (4)保存接口时,其命名方法类似于保存类的文件命名方法,即保存接口的文件名必须与接口名相同。一个文件中可以有多个接口,但最多只有一个接口为public型,其它的接口默认。,2、接口的实现 类实现某接口,利用关键
5、字implements,如: 类修饰符class 类名称 extends 父类名 implements 接口名列表 变量的定义及初始化;方法的定义及方法体; ,几点说明: (1)一个类可以实现多个接口,在implements关键字后,逐个列出需要实现的接口名。 (2)一个类在实现接口中定义的所有的抽象方法时,必须与接口中定义的方法完全一致,即具有相同的方法名、参数列表和返回值。 (3)由于接口中的抽象方法默认都是public类型的,因此在类中实现方法时,方法名前必须写出public,否则会出错。 (4)接口与抽象类类似,不能被实例化,例:接口的实现interface Animalvoid mo
6、delOfAction();void speak(); class Fish implements Animalpublic void modelOfAction()System.out.println(“Fish can swim!“); public void speak()System.out.println(“Fish is bubbing!“); class Bird implements Animalpublic void modelOfAction()System.out.println(“Bird can fly!“); public void speak()System.ou
7、t.println(“Bird is singing!“); 子类实现接口中的方法必须使用public;,3、接口的继承 一个接口不能实现另一个接口,但可以继承多个接口 如: interface Aint methodA(); interfaceBint methodB(); interface C extends A,B/接口C称为复合接口int methodC(); 子类除了实现父接口中的抽象方法,还必须实现间接父 接口中的抽象方法,否则,该类只能成为抽象类。 如:,class MyClass implements Cpublic int methodC()return c; public int methodB()return b;public int methodA()return a;,系统定义的接口见教材p125,