疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java 方法重载与方法重写


 

          方法重载(Overload):

  1.在同一个类中

  2.方法名相同

  3.参数的个数或类型不同

  4.与方法的返回类型无关

  5.与方法的修饰符无关

  方法重写(Override):

  方法重写必须是子类继承父类,才能进行对父类的方法进行重写。

  1.重写方法与被重写方法必须拥有相同的方法名

  2.重写方法与被重写方法必须拥有相同的参数列表

  3.重写方法的返回值类型必须与被重写方法的返回值类型相同

  4.重写方法不能缩小被重写方法的访问权限

  这里注意的是重写方法,必须是子类中能访问到的父类的方法。

  方法重载与方法重写的区别:

  1.重载是同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型无关

  2.重写涉及的是子类和父类之间的同名方法,要求方法名相同、参数列表相同、返回值类

  型相同方法重载示例:

  //默认初始方法,没有参数

  public void work(){}

  //重载的方法,含有一个int类型的参数

  public void work(int x){}

  //重载的方法,含有一个String类型的参数

  public void work(String str){}

  //重载的方法,含有两个int类型的参数

  public void work(int x,int y){}

  //错误的重载1,这里会出错,因为重载与返回类型无关

  public int work(){return 0;}

  //错误的重载2,这里会出错,因为重载与访问修饰符无关

  private int work(){}

  测试效果的话,直接使用this关键加.重载的方法会显示出来。

  方法重写示例:

  /*

  * 父类代码

  */

  public class Parent {

  //要被重写的方法

  public void work(){

  //省略代码块

  }

  //要被重写的方法

  public void run(String p){

  //省略代码块

  }

  public void sleep(String p){

  //省略代码块

  }

  //此方法无法被重写,因为在子类中访问不到

  private void eat(){

  //省略代码块

  }

  }

  /*

  * 子类代码

  */

  public class Child extends Parent {

  //重写了父类方法

  public void work(){

  //省略代码块

  }

  //重写了父类方法

  public void run(String people){

  //省略代码块

  }

  //此处无法构成方法重写,因为与父类中的sleep方法的参数列表不同

  public void sleep(){

  }

  //这里会提示编译错误,因为与父类的方法返回类型不同

  public String sleep(String p){

  return "nihao";

  }

  }