在Java中,多态(polymorphism)是面向对象编程的一个重要概念,它允许你使用一个通用的接口来表示不同的对象和操作这些对象,而不必关心具体的对象类型。多态性有两种主要形式:编译时多态(静态多态)和运行时多态(动态多态)。
编译时多态(静态多态):
public class Example {
public void doSomething(int x) {
// do something with int
}
public void doSomething(String str) {
// do something with String
}
}
在上面的例子中,doSomething
方法在编译时会根据传递的参数类型选择合适的版本。
运行时多态(动态多态):
class Animal {
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
public void makeSound() {
System.out.println("Dog barks");
}
}
class Cat extends Animal {
public void makeSound() {
System.out.println("Cat meows");
}
}
使用动态多态:
Animal dog = new Dog();
Animal cat = new Cat();
dog.makeSound(); // 输出: Dog barks
cat.makeSound(); // 输出: Cat meows
在上面的例子中,dog
和 cat
是 Animal
类型的引用,但它们指向了实际的 Dog
和 Cat
对象。在运行时,Java 会动态地调用相应子类的方法。
多态性有助于提高代码的可维护性和扩展性,因为你可以通过引用父类类型的对象来调用子类的方法,而无需了解实际的子类类型。