📜  java中的多态性与覆盖(1)

📅  最后修改于: 2023-12-03 15:02:01.663000             🧑  作者: Mango

Java中的多态性与覆盖

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()方法,会根据对象的实际类型而调用相应的方法实现,从而实现了多态性。