一、多态
1.定义
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:
2.多态的优点
- 1. 消除类型之间的耦合关系
- 2. 可替换性
- 3. 可扩充性
- 4. 接口性
- 5. 灵活性
- 6. 简化性
3.多态存在的三个必要条件
- 继承
- 重写
- 父类引用指向子类对象:Parent p = new Child();
class Shape {
void draw() {}
}
class Circle extends Shape {
void draw() {
System.out.println("Circle.draw()");
}
}
class Square extends Shape {
void draw() {
System.out.println("Square.draw()");
}
}
class Triangle extends Shape {
void draw() {
System.out.println("Triangle.draw()");
}
}
首先,定义了一个名为Shape
的基类,它有一个名为draw
的方法。这个方法在Shape
类中没有具体的实现。
然后,定义了三个继承自Shape
的子类:Circle
,Square
和Triangle
。每个子类都重写了draw
方法,提供了自己的实现。例如,Circle
类的draw
方法会打印出"Circle.draw()"。
4.接口的多态
- 一个类可以实现多个接口,一个接口引用可以指向实现该接口的任何对象。
- 接口本身不能实例化,但可以用来声明引用类型,该引用类型可以指向任何实现了接口的类的对象。
- 接口实现多态的核心在于定义一组行为(方法),由不同的类以不同的方式实现这些行为。
5.注意事项
- 使用多态时,只能调用引用类型中存在的方法,即使实际对象可能拥有更多的方法。
- 强制类型转换可以将一个接口的引用转换为实现类的类型,但前提是对象本身就是该类型或者该类型的子类型。