首页  >  文章  >  Java  >  Java中动态多态和静态多态有什么区别?

Java中动态多态和静态多态有什么区别?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-30 11:15:20735浏览

What is the difference between dynamic and static polymorphism in Java?

了解 Java 中的动态和静态多态性

Java 中的多态性允许不同类的对象以相似的方式运行,尽管它们之间存在差异。这种灵活性是通过两种类型的多态性实现的:动态和静态。

动态多态性
也称为运行时多态性,动态多态性在子类中发生方法重写时发生。对重写方法的调用在运行时根据实际对象类型进行解析。

考虑以下示例:

<code class="java">class Animal {
    public void move() {
        System.out.println("Animals can move");
    }
}

class Dog extends Animal {
    @Override
    public void move() {
        System.out.println("Dogs can walk and run");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal(); // Animal reference and object
        Animal dog = new Dog(); // Animal reference but Dog object

        animal.move(); // Output: Animals can move
        dog.move(); // Output: Dogs can walk and run
    }
}</code>

在此示例中,move() 方法在狗类。当动物引用调用 move() 方法时,对象的实际类型(Animal 或 Dog)决定了运行时的行为。这就是动态多态。

静态多态(方法重载)
静态多态,也称为编译时多态,当存在多个同名但参数列表不同的方法时,就会发生这种情况。同一个班级。对正确方法的调用是在编译时根据传递的参数的数量和类型确定的。

考虑以下示例:

<code class="java">class Calculation {
    void sum(int a, int b) {
        System.out.println(a + b);
    }

    void sum(int a, int b, int c) {
        System.out.println(a + b + c);
    }

    public static void main(String[] args) {
        Calculation calculation = new Calculation();
        calculation.sum(10, 10, 10); // Output: 30
        calculation.sum(20, 20); // Output: 40
    }
}</code>

在此示例中, sum()方法重载了不同的参数列表。对正确 sum() 方法的调用是在编译时根据传递的参数数量确定的。这就是静态多态或方法重载。

以上是Java中动态多态和静态多态有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

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