22
1 1 回回 回回 回回回回extends extends 回回回回 回回回回 回回回回 回回回回 super super final final 回回回回回 回回回回回

继承: extends 变量覆盖、方法重写 super、final 上转型对象

Embed Size (px)

DESCRIPTION

回顾. 继承: extends 变量覆盖、方法重写 super、final 上转型对象. 本节学习目标. 掌握抽象类的创建和使用 掌握接口的创建和使用 了解内部类、匿名类. 5.8 继承与多态. 父类的多个子类都 重写 了父类中的某个方法。 这些子类的 上转型对象 调用重写的方法。. 龙有九子, 子子不同!. 5.9 abstract 类. 画饼充饥!. 使用 abstract 修饰的类,叫 抽象类 。. abstract class A{ …… }. 使用 abstract 修饰的方法,叫 抽象方法 。抽象方法 没有方法体 。. - PowerPoint PPT Presentation

Citation preview

Page 1: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

11

回顾回顾•继承:继承: extendsextends•变量覆盖、方法重写变量覆盖、方法重写•supersuper 、、 finalfinal•上转型对象上转型对象

Page 2: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

22

本节学习目标本节学习目标•掌握抽象类的创建和使用掌握抽象类的创建和使用•掌握接口的创建和使用掌握接口的创建和使用•了解内部类、匿名类了解内部类、匿名类

Page 3: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

33

5.8 5.8 继承与多态继承与多态• 父类的多个子类都重写了父类中的某个方法。• 这些子类的上转型对象调用重写的方法。

龙有九子,子子不同!

Page 4: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

44

5.9 abstract5.9 abstract 类类• 使用 abstract 修饰的类,叫抽象类。

abstract class A{ …… }

• 使用 abstract修饰的方法,叫抽象方法。抽象方法没有方法体。

画饼充饥!

abstract 数据类型 方法名(参数) ;

Page 5: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

55

5.9 abstract5.9 abstract 类类– 抽象类中可能没有抽象方法,有抽象方法的类一定是抽象类。– 抽象类不能实例化。– 抽象类必须继承,抽象方法必须在子类中给出具体实现。– 子类根据自身需要扩展抽象类。

• 注意:

Page 6: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

66

abstract class Employee{// 抽象类 int basic = 2000; // 抽象方法 abstract void salary(); }

class Manager extends Employee{ void salary() {// 在子类中重写 salary 方法 System.out.println(" 工资等于 "+basic*5+8672); } }

Page 7: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

77

abstract 和 final 能叠用吗 ?

答:不能,矛盾。

Page 8: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

88

5.10 5.10 接口接口• 接口:弥补单继承的缺点,即一个类可以实现多个接口。

1. 接口的声明与使用[public] interface 接口名 {//接口体 }

( 1 )声明

[public][static][final] 变量名=初值; [public][abstract] 方法类型 方法名 ([参数表 ])

( 2 )接口体:包括常量和抽象方法接口中定义的都是共有常量,可以省略接口中定义的都是共有抽象方法,可以省略

Page 9: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

99

5.10 5.10 接口接口class A implements 接口 1,接口 2, ……

( 3 )接口的使用

• 接口不能实例化,必须被实现。• 类必须实现接口的所有方法,否则是抽象类。• 父类实现了接口,子类自然也就实现了。• 实现接口的方法时要有修饰符 public 。

Page 10: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

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()

Page 11: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

1111

5.10 5.10 接口接口2. 接口与多态( 1 )接口体只关心功能。( 2 )不同的类实现接口,体现多态性。

Page 12: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

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{ …… }

Page 13: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

1313

什么时候继承 ?什么时候组合?

Page 14: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

1414

5.11 5.11 接口回调接口回调1. 接口回调:接口声明的变量引用实现它的类的实例。

interface A{ …… }

class B implements A{ …… }

A a=new B();

Page 15: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

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(); } }

声明接口变量

引用类的实例

引用类的实例

Page 16: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

1616

5.11 5.11 接口回调接口回调2. 接口作为参数:接口类型的参数可以赋值为实现它的类的实例。

interface A{ …… }

class B implements A{ …… }

void method(A a){ …… }

method(new B());

Page 17: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

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()); } }

接口作参数

传递实现接口的类的对象

Page 18: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

1818

5.12 5.12 内部类内部类• 类中类

– 外嵌类– 内部类

• 内部类是类的一个成员

Page 19: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

1919

5.13 5.13 匿名类匿名类• 类体与对象的创建组合在一起button1.addActionListener(new ActionListener(…){ …})

• 多用于事件处理

Page 20: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

2020

总结:总结:•上转型对象上转型对象•抽象类抽象类的创建和使用的创建和使用•接口接口的创建和使用的创建和使用•内部类、匿名类内部类、匿名类

Page 21: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

2121

实验实验 33 :继承:继承• 实验时间: 待定• 实验地点:教 8 五楼• 实验内容:

– 创建“创建“表表””类类 ,, 要求要求 ::成员变量:时、分、秒成员方法:构造方法、获取时间、 设置时间

( 系统的时间 )– 创建“创建“闹钟闹钟””类类 ,, 要求要求 ::

继承“表”类成员变量:整点报时

Page 22: 继承: extends 变量覆盖、方法重写 super、final 上转型对象

2222

实验实验 33 :继承:继承• 实验要求:

– 提前准备实验内容– 遵守实验室规定– 遵守编程规范