区分 Java 中的动态多态性和静态多态性
理解动态多态性和静态多态性之间的区别对于 Java 的面向对象编程至关重要。本文将提供一个简化的解释和示例来阐明这个概念。
动态多态与静态多态
多态允许单个方法名称有多个实现,具体取决于调用它的对象类型。多态性有两种主要类型:
方法重载
方法重载是静态多态性的一种形式,其中多个同一类中存在同名的方法,但参数不同。调用重载方法时,Java 根据传入参数的数量和类型确定要调用的适当方法。
代码示例(方法重载):
<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 obj = new Calculation(); obj.sum(10, 10, 10); // Output: 30 obj.sum(20, 20); // Output: 40 } }</code>
方法重写
方法重写是动态多态性的一种形式,其中具有相同名称和签名的方法在不同的类中声明,但共享一个公共的父类。当调用重写的方法时,Java 在运行时根据对象的实际类确定要调用的方法。
代码示例(方法重写):
<code class="java">class Animal { public void move() { System.out.println("Animals can move"); } } class Dog extends Animal { public void move() { System.out.println("Dogs can walk and run"); } } public class TestDog { public static void main(String[] args) { Animal a = new Animal(); // Animal reference and object Animal b = new Dog(); // Animal reference but Dog object a.move(); // Output: Animals can move b.move(); // Output: Dogs can walk and run } }</code>
以上是Java 中方法重写和方法重载有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!