欢迎访问宙启技术站
智能推送

Java函数:使用多态实现方法覆盖和重载

发布时间:2023-08-20 05:14:54

多态是面向对象编程的一个重要概念,是指父类的引用可以指向子类的对象,通过这个引用调用方法时,会根据具体的对象类型来执行对应的方法。

方法覆盖是指子类对父类方法的重新定义,方法重载是指在一个类中可以定义多个同名的方法,但是参数列表不同。

下面通过一个例子来说明如何使用多态实现方法覆盖和重载。

假设我们有一个父类Animal,有一个方法eat(),并有两个子类Dog和Cat,它们分别重写了eat()方法。除此之外,我们还在Animal类中定义了多个重载的方法eat(),每个方法都有不同的参数列表。

class Animal {
    public void eat() {
        System.out.println("Animal is eating");
    }

    public void eat(String food) {
        System.out.println("Animal is eating " + food);
    }

    public void eat(String food1, String food2) {
        System.out.println("Animal is eating " + food1 + " and " + food2);
    }
}

class Dog extends Animal {
    public void eat() {
        System.out.println("Dog is eating");
    }
}

class Cat extends Animal {
    public void eat() {
        System.out.println("Cat is eating");
    }
}

在主函数中,我们创建了一个Animal类型的引用变量animal,分别指向Dog和Cat的实例对象。我们依次调用eat()方法和重载的eat()方法,观察输出结果。

public static void main(String[] args) {
    Animal animal1 = new Dog();
    Animal animal2 = new Cat();

    animal1.eat();
    animal2.eat();

    animal1.eat("meat");
    animal2.eat("fish");

    animal1.eat("meat", "bone");
    animal2.eat("fish", "mouse");
}

输出结果如下:

Dog is eating
Cat is eating
Animal is eating meat
Animal is eating fish
Animal is eating meat and bone
Animal is eating fish and mouse

通过多态,animal1和animal2的引用都指向了不同的子类实例对象,但是调用的方法却是根据实际的对象类型来执行的,表现出不同的行为。

另外,我们通过多个重载的eat()方法,根据传入的参数多少和类型的不同,选择了不同的方法进行调用。

总结来说,使用多态可以实现方法覆盖和重载。方法覆盖通过子类重新定义父类的方法来改变其行为,方法重载在同一个类中可以定义多个同名的方法,通过参数列表的不同来区分。