方法重写
子类可以继承到父类的属性和方法,但是有些方法,子类的实现与父类的方法可能实现的不同。
当父类提供的方法已经不能满足子类的需求时,子类中可以定义与父类相同的方法。
子类方法完成对父类方法的覆盖,又叫重写(Override)
package Override;
public class Animal {
/**
* 父类
* 定义所有的动物都会叫
*
*
* **/
public void bark() {
System.out.println("bark~");
}
//子类Dog继承父类Animal
//子类Cat继承父类Animal
class Cat extends Animal{
@Override //方法的重写
public void bark() {
System.out.println("miao~");
}
}
//Dog类继承Animal类
class Dog extends Animal{
@Override //方法的重写
public void bark() {
System.out.println("wang~");
}
}
}
//注意,在这里其实我写的时候存在一个bug,子类Dog和子类cat都写在了父类当中,所以在Test类当中,两个子类的创建对象的方式也相应发生了改变,有大佬知道为啥要这种方式进行创建对象吗?
在Test类当中进行实例化
package Override;
public class Test {
public static void main(String[] args) {
//实例化一个Animal对象
Animal animal=new Animal();
animal.bark();
//实例化一个Dog对象
//Animal.Dog dog =new Animal.Dog();
//dog.bark();
//实例化一个Cat对象
Animal.Cat cat =animal.new Cat();//这里实例化对象的区别
cat.bark();
Animal.Dog dog =animal.new Dog();//这里实例化对象的区别
}
}
重写的注意事项
1。方法名必须和父类一致
2。参数列表必须和父类一致
3。方法的访问权限需要大于等于父类方法的访问权限
4。方法的返回值需要小于等于父类的返回值类型