Overload和Override的区别?
首先,Overload是重载,Override是重写。
Overload 是用于相同方法名的方法上的;重载要求方法名一致,参数列表不同,与返回值类型、访问修饰符、抛出的异常无关;如果是子类重写父类的方法,那么父类的访问权限不能是private,不然相当于子类写了个全新方法。
Override 是用于子类继承父类时候,重写父类方法的;重写要求方法名、返回值类型、参数列表要一致,访问修饰符不能小于父类;父类访问修饰符是private时,不存在重写,子类相当于写了个全新方法。
对于异常,Override要求子类重写的时候,必须跟父类一致或者是父类异常的子类。
附上代码说明:
public class Test1 {
public static void main(String[] args) {
Animal animal = new Animal();
Dog dog = new Dog();
animal.setName("animal");
animal.setPerformance("会跑");
dog.setName("dog");
dog.setPerformance("会飞");
System.out.println(animal.getAnimalStr());
System.out.println(dog.getAnimalStr());
dog.getAnimalStr("smallDog", "不会飞");
}
}
class Animal {
private String name;
private String performance;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPerformance() {
return performance;
}
public void setPerformance(String performance) {
this.performance = performance;
}
/**
* 获取属性
* <br/> By zlwei On 2019/121:15
* @param
* @return java.lang.String
*/
public String getAnimalStr() {
return name + ": " + performance;
}
}
class Dog extends Animal {
private String name;
private String performance;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPerformance() {
return performance;
}
public void setPerformance(String performance) {
this.performance = performance;
}
@Override
public String getAnimalStr() {
return "子类的:" + name + ": " + performance;
}
public void getAnimalStr(String name, String performance) {
System.out.println("子类的:重载的:" + name + ": " + performance);
}
}
结果是:
animal: 会跑
子类的:dog: 会飞
子类的:重载的:smallDog: 不会飞