overload指的是方法重载
override指的是方法重写
画了一个很简单的UML类图给大家解释一下重写和重载
package overloadAndoverride;
public class Person {
private int age;
private String name ;
public void eat()
{
System.out.println("人类的吃饭方法");
}
}
package overloadAndoverride;
public class Student extends Person {
public void eat() {
System.out.println("从人类继承而来的吃饭方法");
}
public void eat(String name) {
System.out.println("从人类继承而来的吃饭方法,学生吃了"+name);
}
}
测试类
package overloadAndoverride;
public class TestOverloadAndOverride {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Person per1 = new Person();
per1.eat();
Student stu1 = new Student();
stu1.eat();
stu1.eat("大白菜");
}
}
输出
总结:
重写总结
重写是发生在子类和父类之间的,或者换句来说重写发生在继承的时候,子类可以重写父类的方法,让父类的方法更适合子类的特点,这也是体现多态的一个方面,权限
重载总结
1.重载发生在一个类中,是因为参数列表不同导致的多态性。
(参数列表不同,参数的;类型、顺序、数目任一不同,或者多个不同)
2.重载时,方法的返回值类型可以不同,能够把返回值类型当做重载的区分标准。
面试:重载和重写的区别:
答:重载和重写都是事先多态的方式,重写实现了编译时的多态,重载实现了运行时的多态。重写发生在子类和父类之间,所以必须有两个类,他们之间是继承关系,子类对父类的方法进行重写,而重载发生在一个类中,对一个类可以有不用的参数列表,而不同的参数列表将会给类提供不同的处理方法,即为重载方法。