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不仅会唱歌,还会跳舞!
posted @ 2019-11-26 22:46  小黑开发  阅读(146)  评论(0)    收藏  举报