了解 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中文网其他相关文章!