理解 Java 中的多态性、重写和重载
在讨论 Java 中的多态性时,区分重载和重写至关重要。重载涉及定义多个具有相同名称但参数不同的方法,而重写则发生在子类实现其超类的方法时。
关于将多态性分类为重载或重写的问题,两者都不完全正确。多态性结合了这两个概念。
抽象基类和重写
多态性最好通过抽象基类来说明,抽象基类声明方法而不实现它们。然后子类定义这些特定于其继承的方法。这个过程被认为是重写的,因为子类为继承的方法提供了自己的实现。
例如,考虑抽象基类 Human 和一个抽象方法 goPee(),代表一个普通人去洗手间。子类 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"); } }
通过创建包含 Human 实例的 ArrayList,我们可以多态调用 goPee() 方法,根据特定的情况产生不同的输出子类:
ArrayList<Human> group = new ArrayList<>(); group.add(new Male()); group.add(new Female()); for (Human person : group) person.goPee();
这说明了多态性的多功能性,可以在不同对象之间使用通用方法,尽管它们有特定的实现。
以上是重载与重写:多态性在 Java 中与两者有何关系?的详细内容。更多信息请关注PHP中文网其他相关文章!