首页 >Java >java教程 >重载与重写:多态性在 Java 中与两者有何关系?

重载与重写:多态性在 Java 中与两者有何关系?

Barbara Streisand
Barbara Streisand原创
2024-12-21 00:38:09640浏览

Overloading vs. Overriding: How Does Polymorphism Relate to Both in Java?

理解 Java 中的多态性、重写和重载

在讨论 Java 中的多态性时,区分重载和重写至关重要。重载涉及定义多个具有相同名称但参数不同的方法,而重写则发生在子类实现其超类的方法时。

关于将多态性分类为重载或重写的问题,两者都不完全正确。多态性结合了这两个概念。

抽象基类和重写

多态性最好通过抽象基类来说明,抽象基类声明方法而不实现它们。然后子类定义这些特定于其继承的方法。这个过程被认为是重写的,因为子类为继承的方法提供了自己的实现。

例如,考虑抽象基类 Human 和一个抽象方法 goPee(),代表一个普通人去洗手间。子类 MaleFemale 使用特定实现重写此方法:

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");
    }
}

通过创建包含 Human 实例的 ArrayList,我们可以多态调用 goPee() 方法,根据特定的情况产生不同的输出子类:

ArrayList<Human> group = new ArrayList<>();
group.add(new Male());
group.add(new Female());

for (Human person : group) person.goPee();

这说明了多态性的多功能性,可以在不同对象之间使用通用方法,尽管它们有特定的实现。

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

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