区分 Java 中的动态多态性和静态多态性
理解动态多态性和静态多态性之间的区别对于 Java 的面向对象编程至关重要。本文将提供一个简化的解释和示例来阐明这个概念。
动态多态与静态多态
多态允许单个方法名称具有多个实现,具体取决于调用它的对象类型。多态性有两种主要类型:
方法重载
方法重载是静态多态性的一种形式,其中多个同一类中存在同名的方法,但参数不同。调用重载方法时,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
}
}
方法重写
方法重写是动态多态性的一种形式,其中具有相同名称和签名的方法在不同的类中声明,但共享一个公共父类。当调用重写的方法时,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
}
}
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3