Java面试 - 重载(Overload)和重写(Override)的区别?

1、重载是在同一个类中,可声明多个同名方法,但参数列表不同(参数顺序,个数,类型)。而重写是在子类中,对从父类中继承的方法进行重新编写,但方法名,参数列表(参数顺序,个数,类型),返回值类型必须保持一致。

2、重载实现的是编译时的多态性,而重写实现的是运行时的多态性。

3、重载可以抛出不同的异常, 而重写可以减少或删除,但一定不能抛出新的检查异常。

4、重载可以有不同的访问权限修饰符, 而重写不能拥有比父类方法更加严格的访问权限修饰符。

举例:

重载

    // 重载:方法名相同 参数不同
public void setStudentInfo(int id, String name){
this.id = id;
this.name = name;
}
public void setStudentInfo(int id, String name, String email){
this.id = id;
this.name = name;
this.email = email;
}

打印结果

学生ID:301  姓名:Jack
学生ID:702 姓名:Jack Ma 邮箱:702@qq.com

重写

假设有Person类

class Person {
public void show(String name) {
System.out.print(name + "会唱歌");
}
}

在重写show方法时要继承父类Person,且参数列表(参数顺序,个数,类型),返回值类型都要保持一致。

public class Student extends Person{
public void show(String name){
//重写父类Person的show(String name)方法
System.out.print(name+"不仅会唱歌,还会跳舞!");
};
public static void main(String[] args) {
Student s1 = new Student();
s1.show("Pony");
}
}

打印结果

Pony不仅会唱歌,还会跳舞!
上一篇:98Echarts - 地理坐标/地图(USA Population Estimates (2012))


下一篇:6 pandas人口分析案例