java中的多态

115 阅读1分钟

同一个方法名可以被不同的对象调用,且可以根据不同的对象类型执行不同的实现,这种特性可以提高代码的灵活性和可扩展性。

      具体来说,多态可以通过继承和接口实现。当子类继承父类或实现接口时,它们可以重写父类或接口中的方法,并根据自己的需求实现自己的逻辑。当调用该方法时,根据实际对象的类型,会自动调用相应的实现。

举个例子,假设有一个动物类Animal,它有一个eat()方法:


public class Animal {

    public void eat() {

        System.out.println("Animal is eating.");

    }

}

然后有两个子类Cat和Dog,它们继承了Animal类,并且分别重写了eat()方法:


public class Cat extends Animal {

    @Override

    public void eat() {

        System.out.println("Cat is eating fish.");

    }

}

public class Dog extends Animal {

    @Override

    public void eat() {

        System.out.println("Dog is eating meat.");

    }

}

现在我们可以创建一个Animal类型的引用,然后通过它调用eat()方法,如下:

```java

Animal animal = new Cat(); // 创建一个Cat对象,并将它赋给Animal类型的引用

animal.eat(); // 输出:Cat is eating fish.

同样地,我们也可以创建一个Dog对象,并调用它的eat()方法:


Animal animal = new Dog(); // 创建一个Dog对象,并将它赋给Animal类型的引用

animal.eat(); // 输出:Dog is eating meat.

由于animal变量的类型是Animal,但是它实际引用的是Cat或Dog对象,因此在调用eat()方法时,会自动调用相应的子类实现,这就是Java中的多态。