多态的简单理解

子类的实例化对象用父类接受确实是多态(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 @   充满希望与信心  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示