方法重载与方法重写

一、方法重载

  1、多个方法在同一个类中;

  2、多个方法具有相同的方法名(功能相同);

  3、多个方法的参数列表不同(数据类型、个数、顺序(类型不同)满足其一即可)

  【注】方法重载与是否有返回值无关;在调用的时候,Java虚拟机会通过参数的不同来区分同名的方法。

  public void sum(int a, int b) {
    System.out.println(a + b);
  }
  public void sum(double a, double b) {
    System.out.println(a + b);
  }
  public void sum(double a, int b) {
    System.out.println(a + b);
  }
  public void sum(int a, int b, int c) {
    System.out.println(a + b + c);
  }

   以上代码属于方法重载。

  public void sum(int a, int b) {
    System.out.println(a + b);
  }
  public int sum(int a, int b) {
    return a + b;
  }

   注意这几行代码,不属于方法重载,会编译报错,报错如下图

  

 

   报错的意思是MethodTest(这是我的类名)类中的sum方法重复,所以方法重载是与返回值无关的。

二、方法重写  

  1、方法是在两个类中,并且这两个类有继承关系;

  2、方法名是相同的;

  3、参数列表相同。

  【注意】私有方法不能被重写(父类私有成员子类是不能继承的); 方法的返回值类型、方法名、参数列表都一致;对于访问权限符,子类的访问权限符要大于等于父类;对于异常,子类的异常小于等于父类。

public class Father {
  public void show() {
    System.out.println("父类的方法");
  }
}
public class Son extends Father {
  @Override
  public void show() {
    System.out.println("子类的方法");
  }
}

  以上两个类中的方法便属于方法重写。

  如何验证是不是方法重写?

      在需要重写的方法上加注解@Override,这个注解就是检验方法是不是被重写的,如果不是,就会报错,比如我修改一下子类的方法

    

    就会编译报错

    注意点中的事项,大家可以用代码自行去验证。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

分享一个有意思的题,看看能不能诱导到你,答案会在评论区公布哦!!

 

  最后,欢迎大家关注我的公众号呀

  

posted @ 2020-01-07 10:37  是程序媛吖  阅读(475)  评论(1编辑  收藏  举报