10.面向对象程序设计-多态、接口.ppt
文本预览下载声明
第三章 第5节 面向对象——多态、接口 多态 当一个父类存在多个派生类的时候,并且每个派生类都重写了父类中的某个方法,那么父类的该方法在不同的子类中就出现了不同的行为,这就是多态的一种表现形式。 例如下页的示例: 哺乳动物类Mammal提供了最常见的肢体变量和移动行为,但是在子类鲸鱼(Whale)和蝙蝠(Bat)中肢体变量和移动行为被赋予了各自的表现形式。 多态(示例) 关键字abstract(抽象) abstract关键字可以用来修饰类和方法。 abstract修饰的类叫做抽象类,该类不能被实例化,也就是不能使用关键字new来创建该类对象。 abstract修饰的方法叫做抽象方法,抽象方法只有声明部分,而没有具体的方法体。 抽象类重要规则 如果一个非抽象类是一个abstract类的子类,它必须具体实现父类的所有abstract方法。 如果一个类中含有abstract方法,那么这个类必须用abstract来修饰(abstract类也可以没有abstract方法,但abstract方法必须出现在abstract类中)。 一个abstract类只关心它的子类是否具有某种功能,并不关心功能的具体行为,功能的具体行为由子类负责实现。 抽象类(示例) 接口 当一个抽象类中的方法全部为抽象方法时,可以使用interface关键字将这个抽象类定义为接口。 在java中一个类只能有一个父类,如果某个类需要继承多个类的变量(状态)和方法(行为),那么java提供了接口方式,一个类可以实现多个接口,以获得多重继承的特性。 创建接口的语法格式如下: interface 接口名 { }0 关键字implements(实现) 当一个类需要实现某个接口时,使用implements关键字。 如果一个类实现了多个接口的时候,用“,”分割多个接口的名称 在类中实现接口的方法时,方法的名字、返回类型、参数个数及参数类型必须与接口中的完全一致。 如果一个类实现了一个接口,但没有实现接口中的所有方法,那么这个类必须是abstract类。 class 类名 implements 接口名 { } class 类名 implements 接口名1,接口名2 { } 实现接口(示例) 接口访问级别 接口声明时,如果关键字interface前面加上public关键字,就称这样的接口是一个公有接口,公有接口可以被任何一个类使用。如果一个接口没有public修饰,接口为友好级别,友好接口可以被同一包中的其他类访问 接口与抽象类区别 区别 抽象类 接口 关键字 abstract interface 成员变量 可包含任意成员变量(包括各种访问级别的类成员变量和实例成员变量) 只能包含公开的静态常量(默认由public static final修饰) 方法 可包含任意方法(包括各种访问级别的类方法和实例方法) 只能包含公开且抽象的方法(默认由public abstract修饰) 使用 抽象类可以被继承(使用extends关键字) 接口可以被实现(使用implements关键字) 接口回调 接口声明,实现类实例化的对象叫做接口回调。 接口回调是指可以把实现某一接口的类创建的对象赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法。 接口回调(示例) 漫漫IT路, 你需要过来人指点!
显示全部