同一个操作有不同的做法
多态
利用父类声明,子类构造就是多态,如
父类 对象 = null;
对象 = new 子类();
- 因为是用父类声明的,所以只能访问父类的成员
- 若要访问子类的成员,需要强制类型转换,如
((子类)对象).成员
注意,不能使用子类声明,父类构造
详解多态
抽象类
功能
当我们的类需要同一个方法,但这个方法却有不同的是实现时,可以使用抽象类进行继承重写这个方法
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
abstract class Employee{ private String name;
public Employee(String name){ this.name = name; } public abstract void work(); }
class Programmer extends Employee{ public Programmer(String name){ super(name); } public void work(){ System.out.println("我在编程"); } }
class Manager extends Employee{ public Programmer(String name){ super(name); } public void work(){ System.out.println("我在管理"); } }
|
注意
- 抽象方法必须在抽象类里面
- 抽象类里面不一定要有抽象方法
- 抽象类可以被继承抽象类,但子类必须实现上面所有的类的抽象方法
接口
- 相当于一个标准,规范,一切实现都需要通过子类
- 接口里面只能包含抽象方法(完全抽象化)
- 接口可以被实现,不能被继承
- 接口可以被抽象类实现,也可以被具体类实现
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| interface A{ void method1(); void method2(); void method3(); }
class B implements A{ public void methid1(){ } public void methid2(){ } public void methid3(){ } }
|
注意
class Test extends 类 implements 接口1,接口2{}
- 注意用什么类声明,什么类构造
- 接口也可以被接口继承