2019-1-19
一、方法的重写或方法的覆盖(overriding)
1、子类根据需求对从父类继承的方法进行重新编写
2、重写时,可以用super。方法来保留父类的方未能
3、构造方法不能重写
二、方法重写的规则
1、方法名相同
2、参数列表相同或者是其子类
3、返回值类型相同或者是其子类
4、访问权限不能严于父类
5、父类的静态方法不能被子类覆盖为非静态方法,父类的非静态方法不能被子类覆盖为静态方法
6、子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态态方法 PS:静态方法中无法使用super
7、父类的私有方法不能被子类覆盖
8、不能抛出比父类方法更多的异常

三、重写equals方法
写一个带名字和年龄的猫类,创建两个对象,对比是否相同
package java_2019_1_19;
//猫类
public class Cat {
private String name;
private int age;
public Cat() {}
public Cat(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
//重写equals对比方法,如果两个对象的名字和年龄一样即为相同
public boolean equals(Object arg) {
if(arg instanceof Cat) {
Cat a = (Cat)arg;
if(a.name.equals(this.name)&&a.age==this.age) {
return true;
}
}
return false;
}
}
package java_2019_1_19;
//测试
public class Test {
public static void main(String[] args) {
Cat a1 = new Cat("小白",16);
Cat a2 = new Cat("小白",16);
System.out.println(a1.equals(a2));
}
}
结果示例:

浙公网安备 33010602011771号