📅  最后修改于: 2023-12-03 15:02:01.663000             🧑  作者: Mango
Java是一种面向对象编程语言,在其中多态性是一个非常重要的概念。多态性允许程序员使用不同的方式操作对象,从而增加了代码的可重用性和可扩展性。
多态性是指具有多种形态的能力。在Java中,多态性允许使用一个父类类型的引用变量来引用子类类型的对象,从而调用子类特有的方法。这样就可以在父类和子类之间建立了一种关系,促进了代码的可重用性和可扩展性。
Java中实现多态性的方法是通过方法覆盖(Overridding)和方法重载(Overloading)。
方法覆盖是指子类重新定义父类中已有的方法,方法名、参数列表和返回类型都必须与父类中的定义相同。当子类对象调用该方法时,会优先使用子类中的方法实现。
方法重载是指在同一个类中定义多个同名的方法,但是它们的参数列表不同。当调用该方法时,Java会根据传递的参数自动选择最合适的方法来执行。
下面是一个简单的Java程序,演示了多态性和方法覆盖的使用。
class Animal {
public void eat() {
System.out.println("动物在进食...");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("狗在啃骨头...");
}
}
class Cat extends Animal {
public void eat() {
System.out.println("猫在啃鱼骨头...");
}
}
public class TestPolymorphism {
public static void main(String[] args) {
Animal animal1 = new Dog();
Animal animal2 = new Cat();
animal1.eat(); // 输出狗在啃骨头...
animal2.eat(); // 输出猫在啃鱼骨头...
}
}
在这个程序中,我们定义了三个类:Animal、Dog和Cat。其中Animal是一个父类,它有一个eat()方法;Dog和Cat是它的子类,它们都覆盖了父类中的eat()方法,以实现自己特有的行为。
在main()方法中,我们分别创建了一个Dog对象和一个Cat对象,并用Animal类型的引用变量来引用它们。这时,我们调用它们的eat()方法,会根据对象的实际类型而调用相应的方法实现,从而实现了多态性。