方法重载(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";
}
}