多态
多态学习笔记
定义:
多态是面向对象编程中的一个核心概念,它允许一个接口或超类的引用在运行时根据实际对象的类型执行不同的操作。
实现方式:
- 继承与重写:子类继承父类并重写其方法,实现多态。
- 接口:类实现一个或多个接口,并实现接口中的所有方法。
优点:
- 代码复用:避免代码重复。
- 扩展性:新类可以轻松地加入,而不需要修改现有代码。
- 维护性:更少的代码意味着更少的错误和更简单的维护。
注意事项:
- 向上转型:子类引用转换为超类引用,只能调用超类的方法。
- 向下转型:超类引用转换为子类引用,需注意
ClassCastException
。
与封装和抽象的关系:多态是OOP的三大特性之一,与封装和抽象紧密相关。封装隐藏内部细节,多态决定如何与对象交互,抽象则定义了通用接口。
示例代码:
java复制代码
class Animal { void makeSound() { println("Animal sound") } } | |
class Dog extends Animal { void makeSound() { println("Dog barks") } } | |
class Cat extends Animal { void makeSound() { println("Cat meows") } } | |
public class PolymorphismDemo { | |
public static void main(String[] args) { | |
Animal a1 = new Dog(); | |
Animal a2 = new Cat(); | |
a1.makeSound(); // Output: Dog barks | |
a2.makeSound(); // Output: Cat meows | |
} | |
} |
在上述代码中,Dog
和Cat
都继承了Animal
类并重写了makeSound()
方法。通过向上转型,我们可以将Dog
或Cat
对象的引用赋值给Animal
类型的引用变量。调用makeSound()
方法时,会根据实际对象的类型执行相应的操作,这就是多态的体现。
接口
接口在多态中扮演着重要的角色。通过接口,我们可以定义一组通用的方法,而具体的实现细节则由实现该接口的类来完成。这样,我们可以将一个接口类型的引用指向任何实现该接口的类对象,从而在运行时根据实际对象的类型来执行不同的操作。