跳转至

如何理解Java中的多态?

一句话理解多态:同一个行为,不同对象去执行,结果不一样。 它的底层原理就是“动态绑定”,编译时看的是父类,运行时实际找的是子类。

下面这张图演示了多态的经典场景:用一个统一的父类引用,去指挥不同的子类干活,不用改业务代码。

deepseek_mermaid_20260612_5b7771.png

多态的两个必要条件

  • 继承/接口 + 方法重写:子类必须重写父类方法。

  • 父类引用指向子类对象:Animal a = new Dog();

多态到底有什么用?

它的核心价值在于 “解耦” 。写代码时只依赖抽象,不依赖具体,方便扩展。

比如写一个喂食方法 feed(Animal a),传入狗就喂狗,传入猫就喂猫。以后如果新增一只鸟,这个喂食方法不用改任何代码,只要鸟也继承自 Animal 并重写进食方法就行。这就是对修改关闭,对扩展开放。

一句话记忆法

编译看左边,运行看右边。

左边(父类)决定你能调什么方法,右边(子类对象)决定这个方法具体怎么执行。