Upload
hamilton-haley
View
202
Download
6
Embed Size (px)
DESCRIPTION
回顾. 继承: extends 变量覆盖、方法重写 super、final 上转型对象. 本节学习目标. 掌握抽象类的创建和使用 掌握接口的创建和使用 了解内部类、匿名类. 5.8 继承与多态. 父类的多个子类都 重写 了父类中的某个方法。 这些子类的 上转型对象 调用重写的方法。. 龙有九子, 子子不同!. 5.9 abstract 类. 画饼充饥!. 使用 abstract 修饰的类,叫 抽象类 。. abstract class A{ …… }. 使用 abstract 修饰的方法,叫 抽象方法 。抽象方法 没有方法体 。. - PowerPoint PPT Presentation
Citation preview
11
回顾回顾•继承:继承: extendsextends•变量覆盖、方法重写变量覆盖、方法重写•supersuper 、、 finalfinal•上转型对象上转型对象
22
本节学习目标本节学习目标•掌握抽象类的创建和使用掌握抽象类的创建和使用•掌握接口的创建和使用掌握接口的创建和使用•了解内部类、匿名类了解内部类、匿名类
33
5.8 5.8 继承与多态继承与多态• 父类的多个子类都重写了父类中的某个方法。• 这些子类的上转型对象调用重写的方法。
龙有九子,子子不同!
44
5.9 abstract5.9 abstract 类类• 使用 abstract 修饰的类,叫抽象类。
abstract class A{ …… }
• 使用 abstract修饰的方法,叫抽象方法。抽象方法没有方法体。
画饼充饥!
abstract 数据类型 方法名(参数) ;
55
5.9 abstract5.9 abstract 类类– 抽象类中可能没有抽象方法,有抽象方法的类一定是抽象类。– 抽象类不能实例化。– 抽象类必须继承,抽象方法必须在子类中给出具体实现。– 子类根据自身需要扩展抽象类。
• 注意:
66
abstract class Employee{// 抽象类 int basic = 2000; // 抽象方法 abstract void salary(); }
class Manager extends Employee{ void salary() {// 在子类中重写 salary 方法 System.out.println(" 工资等于 "+basic*5+8672); } }
77
abstract 和 final 能叠用吗 ?
答:不能,矛盾。
88
5.10 5.10 接口接口• 接口:弥补单继承的缺点,即一个类可以实现多个接口。
1. 接口的声明与使用[public] interface 接口名 {//接口体 }
( 1 )声明
[public][static][final] 变量名=初值; [public][abstract] 方法类型 方法名 ([参数表 ])
( 2 )接口体:包括常量和抽象方法接口中定义的都是共有常量,可以省略接口中定义的都是共有抽象方法,可以省略
99
5.10 5.10 接口接口class A implements 接口 1,接口 2, ……
( 3 )接口的使用
• 接口不能实例化,必须被实现。• 类必须实现接口的所有方法,否则是抽象类。• 父类实现了接口,子类自然也就实现了。• 实现接口的方法时要有修饰符 public 。
1010
考虑一组可以飞翔的对象,具有相同的本领:飞翔。可以定义下面的公共接口 Flyable,支持三个方法:takeOff、 land、 fly。
public interface Flyable{ public void takeOff(); public void land(); public void fly();}
class Airplane implements Flyable{ public void takeOff(){// 加速起飞 } public void land(){// 减速着陆 } public void fly(){// 保持飞 }}
<<interface>>Flyable
takeOff()Land()Fly()
<<class>>AirplanetakeOff()
Land()Fly()
<<class>>Bird
takeOff() Land()Fly()
<<class>>SupermantakeOff()
Land()Fly()
1111
5.10 5.10 接口接口2. 接口与多态( 1 )接口体只关心功能。( 2 )不同的类实现接口,体现多态性。
1212
5.10 5.10 接口接口3. 接口的继承与组合interface A{ …… }interface B{ …… }interface C{ …… }interface D extends A,B,C{ …… }
interface A{ …… }interface B extends A{ …… }interface C extends B{ …… }interface D extends C{ …… }
1313
什么时候继承 ?什么时候组合?
1414
5.11 5.11 接口回调接口回调1. 接口回调:接口声明的变量引用实现它的类的实例。
interface A{ …… }
class B implements A{ …… }
A a=new B();
1515
interface ShowMessage { void show (); }class TV implements ShowMessage{ public void show() { System.out.println(“ 我是电视机” ); }}class PC implements ShowMessage { public void show() { System.out.println(“ 我是电脑” ); }}
public class Example{ … main… { ShowMessage sm; sm=new TV();
sm.show();
sm=new PC();
sm.show(); } }
声明接口变量
引用类的实例
引用类的实例
1616
5.11 5.11 接口回调接口回调2. 接口作为参数:接口类型的参数可以赋值为实现它的类的实例。
interface A{ …… }
class B implements A{ …… }
void method(A a){ …… }
method(new B());
1717
interface ShowMessage { void show();}class A implements ShowMessage { public void show() { System.out.println("I love This Game"); }}
class C{ public void f(ShowMessage s) { s.show(); }}public class Example { public static void main(String args[]) { C c=new C(); c.f(new A()); } }
接口作参数
传递实现接口的类的对象
1818
5.12 5.12 内部类内部类• 类中类
– 外嵌类– 内部类
• 内部类是类的一个成员
1919
5.13 5.13 匿名类匿名类• 类体与对象的创建组合在一起button1.addActionListener(new ActionListener(…){ …})
• 多用于事件处理
2020
总结:总结:•上转型对象上转型对象•抽象类抽象类的创建和使用的创建和使用•接口接口的创建和使用的创建和使用•内部类、匿名类内部类、匿名类
2121
实验实验 33 :继承:继承• 实验时间: 待定• 实验地点:教 8 五楼• 实验内容:
– 创建“创建“表表””类类 ,, 要求要求 ::成员变量:时、分、秒成员方法:构造方法、获取时间、 设置时间
( 系统的时间 )– 创建“创建“闹钟闹钟””类类 ,, 要求要求 ::
继承“表”类成员变量:整点报时
2222
实验实验 33 :继承:继承• 实验要求:
– 提前准备实验内容– 遵守实验室规定– 遵守编程规范