多态的简单理解

子类的实例化对象用父类接受确实是多态(Polymorphism)的一种体现。在 Java 或其他支持面向对象编程的语言中,多态允许一个父类引用变量来引用一个子类的实例。这意味着父类类型的引用可以指向它的任何子类对象,而具体调用哪个类的方法则取决于对象的实际类型。

这种机制有几个关键的好处:

代码通用性:你可以编写通用的代码来处理父类类型的引用,而实际上它们可以指向任何合适的子类对象。
运行时绑定:在运行时,虚拟机(Virtual Machine)决定要调用哪个类的方法,基于对象实际引用的对象类型,而不是引用变量的类型。这被称为“后期绑定”或“动态方法分派”。

点击查看代码
class Animal {
    void makeSound() {
        System.out.println("Some sound");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Bark");
    }
}

class Cat extends Animal {
    @Override
    void makeSound() {
        System.out.println("Meow");
    }
}

public class TestPolymorphism {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        myDog.makeSound(); // 输出 "Bark"
        myCat.makeSound(); // 输出 "Meow"
    }
}

在这个例子中,myDog 和 myCat 都是 Animal 类型的引用,但它们分别指向 Dog 和 Cat 的实例。在调用 makeSound() 方法时,实际调用的是对象实际类型的方法,即 Dog 的 makeSound() 或 Cat 的 makeSound(),而不是 Animal 类中的 makeSound() 方法。这就是多态的表现。
posted @ 2024-04-10 10:21  充满希望与信心  阅读(18)  评论(0)    收藏  举报