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"; } }