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()方法,根据传入的参数多少和类型的不同,选择了不同的方法进行调用。
总结来说,使用多态可以实现方法覆盖和重载。方法覆盖通过子类重新定义父类的方法来改变其行为,方法重载在同一个类中可以定义多个同名的方法,通过参数列表的不同来区分。
