在Java语言中,方法覆盖(Override)和方法重载(Override)的区别是什么?试编程举例加以说明。
时间: 2024-05-14 09:14:02 浏览: 113
方法覆盖(Override)和方法重载(Overload)是Java语言中两个重要的方法特性,它们的区别如下:
1. 方法覆盖(Override):是指子类中定义了与父类中同名、同参数列表的方法,并且返回值类型和异常类型也相同,这时子类中的方法将覆盖父类中的同名方法。方法覆盖通常用于子类对父类中的方法进行修改或者增强。
2. 方法重载(Overload):是指在同一个类中定义了多个同名的方法,但是它们的参数列表不同(包括参数类型、参数个数或者参数顺序不同),这时可以根据不同的参数列表进行方法调用。方法重载通常用于实现一组相关的方法操作,可以提高代码的复用性。
下面是一个简单的Java程序,用于说明方法覆盖和方法重载的区别:
```java
public class Test{
public static void main(String[] args){
Animal obj1 = new Animal();
obj1.sound();
obj1.sound("Dog");
Dog obj2 = new Dog();
obj2.sound();
obj2.sound("Cat");
}
}
class Animal{
public void sound(){
System.out.println("Animal is making sound...");
}
public void sound(String type){
System.out.println(type + " is making sound...");
}
}
class Dog extends Animal{
public void sound(){
System.out.println("Dog is barking...");
}
}
```
在上面的程序中,Animal类定义了两个方法,分别为sound()和sound(String type),分别用于输出动物发出的声音和指定类型的动物发出的声音。Dog类继承了Animal类,并覆盖了sound()方法,用于输出狗的叫声。
在主程序中,首先创建了一个Animal对象,调用了sound()和sound("Dog")方法,分别输出了动物的声音和狗的声音。然后创建了一个Dog对象,调用了sound()和sound("Cat")方法,分别输出了狗的声音和指定类型的动物的声音。
从上面的程序可以看出,方法覆盖和方法重载的区别在于方法的参数列表是否相同。在Animal类和Dog类中都定义了sound()方法,但是Dog类覆盖了Animal类中的sound()方法,所以调用Dog对象的sound()方法时输出的是狗的声音。而在Animal类中定义了sound(String type)方法,所以调用Animal对象的sound("Dog")方法时输出的是指定类型的动物发出的声音。
阅读全文