首页 >Java >java教程 >Java 中的多态性:它与重写和重载有何不同?

Java 中的多态性:它与重写和重载有何不同?

DDD
DDD原创
2024-12-24 20:23:12713浏览

Polymorphism in Java: How Does it Differ from Overriding and Overloading?

多态性:揭开重写和重载的区别

当谈到 Java 中的多态性时,澄清与重写和重载的区别非常重要超载。重载是指同一个类中存在多个名称相同但参数列表不同的方法。另一方面,重写涉及在子类中定义一个与其超类中的方法具有相同签名(名称和参数)的方法。

在考虑多态性时,最准确的答案在于以下概念:抽象类或接口。抽象基类定义了一个没有实现的方法,然后在其子类中实现。这种方法体现了多态性。

为了说明这一点,请考虑一个具有抽象方法 goPee() 的抽象基类 Human,它不能在 Human 级别定义,但必须在子类 Male 和 Female 中实现以适应性别 -特定行为。

public abstract class Human {
    public abstract void goPee();
}
public class Male extends Human {
    @Override
    public void goPee() {
        System.out.println("Stand Up");
    }
}
public class Female extends Human {
    @Override
    public void goPee() {
        System.out.println("Sit Down");
    }
}

在此示例中,方法 goPee() 在子类提供具体的实现。当我们可以告诉一群人类去小便时,多态性就发挥了作用,他们将根据各自的实现执行该操作。

public static void main(String[] args) {
    ArrayList<Human> group = new ArrayList<>();
    group.add(new Male());
    group.add(new Female());

    // Tell Humans to go pee
    for (Human person : group) person.goPee();
}

输出:

Stand Up
Sit Down

由此通过演示,我们可以清楚地看出,多态性是继承层次结构中的不同对象在响应同一消息时表现出不同行为的能力。重写是实现此行为的机制,而重载是与同一类中的方法签名相关的单独概念。

以上是Java 中的多态性:它与重写和重载有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn