1-重写(覆盖)
1. 参数必须要一样,且返回类型必须要兼容
2. 不能降低方法的存取权限,例如父类public方法不能重写为子类private方法
2-重载(过载)
1. 返回类型可以不同
2. 不能只改变返回类型
3. 可以更改存取权限
3-以下代码简单讨论重写与重载(不包含存储权限)
class Animal {
boolean isWhat(int x) {
System.out.println("动物");
return true;
}
}
class Dog extends Animal {
boolean isWhat(int y) { // 重写父类方法 isWhat
System.out.println("小狗");
return false;
}
}
class Cat extends Animal {
// int isWhat(int z) { // 报错,参数相同且返回类型不兼容,既不是重写也不是重载
// System.out.println("小猫");
// return 1;
// }
int isWhat(int m,int n) { // 返回整数型且参数有所改变,即重载
System.out.println("小猫");
return 1;
}
}
class Fish extends Animal {
boolean scare(int x) { // 既不是重写也不是重载,是子类Fish特有的方法
System.out.println("小鱼好害怕");
return true;
}
boolean isWhat(byte y) { // 返回值兼容,但参数类型有所改变,即重载
System.out.println("小鱼");
return true;
}
}
// 主函数
public class MonsterTestDrive {
public static void main(String[] args) {
Animal[] an=new Animal[4];
an[0]=new Animal();
an[1]=new Dog();
an[2]=new Cat();
an[3]=new Fish();
for(int x=0;x<an.length;x++) {
// 传入一个参数x,且参数类型为 int
an[x].isWhat(x);
// 输出结果: 动物 小狗 动物 动物
// 说明:重载的函数在传入的参数不满足条件时,调用的还是从父类中继承的函数
}
}
}
4-以下代码讨论包含存储权限的重写与重载
// 待更新...