基本介绍
java 中允许同一个类中,多个同名方法的存在,但要求形参列表 不一致,返回类型无要求
好处:
1、减轻了起名的麻烦
2、减轻了记名的麻烦
入门案例:
案例:类:MyCalculator 方法:calculate
- calculate(int n1, int n2) //两个整数的和calculate(int n1, double n2) //一个整数,一个 double 的和calculate(double n2, int n1)//一个 double ,一个 Int 和calculate(int n1, int n2,int n3)//三个 int 的
- 方法名必须相同形参列表必须不同(形参类型,个数或顺序,至少一样不同)返回类型无要求
案例判断:
如下两个方法并没有构成方法的重载。形参类型,个数,顺序都一样,返回类型无要求,是方法的重复定义,会报错。
。
public int calculate(int n1, int n2) {
return n1 + n2;
}
public void calculate(int n1, int n2) {
int res = n1 + n2;
}
方法的重写/覆盖(OverLoad)
-方法的重写就是子类有一个方法和父类的某个方法的名称、返回类型、形参列表都一样,那么就说子类的这个方法覆盖了父类的方法。重写必须依赖于继承,将父类的方法完善。
好处:
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
注意事项和使用细节
- 子类重写方法的形参列表,方法名称要和父类方法的一样返回类型:子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类访问权限:子类重写方法不能缩小父类方法的访问权限(public>protected>默认>private)
代码演示:
public class Animal {//父类
public void cry() {
System.out.println("动物叫唤..");
}
public Object m1() {
return null;
}
public String m2() {
return null;
}
public AAA m3() {
return null;
}
protected void eat() {
}
}
class Dog extends Animal{//子类
//重写父类cry()
public void cry() {
System.out.println("小狗汪汪叫..");
}
//String为Objiect子类,也构成重写
public String m1() {
return null;
}
//这里 Object 不是 String 的子类,因此编译错误
// public Object m2() {
// return null;
// }
//细节: 子类方法不能缩小父类方法的访问权限
//public > protected > 默认>private
public void eat() {
}
}
最后在比较一下两者的异同



