初学java,对方法覆写与方法重载存有疑惑,特此写下小结,帮助理解。
方法的重载(同类中)
同一个类中,方法名相同,参数不同就是重载,与返回值类型无关,实际上是多个方法,仅仅名字相同而已。
类似生活中,大厨炒菜,虽然名字一样,但是每次放的作料不同,做出的菜也不同
public class FunctionDemo {
int price;
public static void main(String[] args) {
FunctionDemo cooker = new FunctionDemo();
cooker.cook();//调用无参cook方法
System.out.println(cooker.cook(18));//调用带参且返回值不同的cook方法
}
void cook(){
System.out.println("炒个青椒肉丝 下酒");
}
int cook(int price){//重载 仅仅名字相同
this.price = price;
System.out.println("天热了 来盘拍黄瓜");
return price;
}
}
/*运行结果:
炒个青椒肉丝 下酒
天热了 来盘拍黄瓜
18
*/
方法的覆写(不同类中)
方法的覆写,存在继承关系,当父类的方法不能满足子类的需求的时候,就需要对其进行覆写。只能调用一个方法。
覆写注意:
1.需要继承关系
2.方法签名完全一致,包括方法名和参数列表
3.子类方法 访问权限比父类高
4.子类方法 返回值类型兼容父类,并且比父类低
5.关键字final 或者 static修饰的 不能被覆写
6.构造方法不能被覆写
public class FunctionDemo1 {
public static void main(String[] args) {
Cooker1 cooker1 = new Cooker1();
cooker1.cook();
}
}
class Cooker{
int cook(){//签名完全一致
System.out.println("炒个青椒肉丝 下酒");
return 1;
}
}
class Cooker1 extends Cooker{//继承Cooker类
public int cook(){//父类方法不能满足子类要求 需要覆写
System.out.println("天热了 来盘拍黄瓜");
return 2;
}
}