方法的覆盖
/*
* 关于方法的覆盖
* 1.什么时候方法要进行重写
* 父类中的方法已经无法满足当前子类的业务需求,需将父类中的方法进行重写
*
* 2.子类如果重写父类中的方法之后,子类对象一定调用的是重写之后的方法
* 3.发生方法覆盖的条件
* 一、发生在具有继承关系的两个类之间
* 二、必须具有相同的方法名、相同的返回值类型、相同的参数列表
* 三、重写的方法不能比被重写的方法拥有更低的访问权限(但)
*
* 四、重写的方法不能比被重写的方法抛出更宽泛的编译时异常(异常机制),父类中方法不抛异常,子类重写的方法
* 可以抛RunTimeException
*
* 五、私有的方法不能被覆盖(多态之后)
* 六、构造方法也不能被覆盖。因为其无法被继承
* 七、静态的方法不能被覆盖(多态之后)
* 因为静态没有方法的覆盖,因为静态方法的访问不需要对象
* 所以在继承类中访问不会受对象引用的影响,在多态的编译运行阶段底层一直是父类而不是子类对象
* 八、覆盖值得是成员方法,与成员变量无关
*
* 4.继承最基本的作用:代码重用
* 继承最重要的作用:方法可以重写
*/
package j方法的覆盖;
public class Test01 {
public static void main(String[] args){
//创建子类对象
Cat c = new Cat();
c.move();//猫在走猫步
//创建父类对象
Animal a = new Animal();
a.move();//动物在奔跑
}
}
//父类
class Animal{
//成员方法
public void move(){
System.out.println("动物在奔跑");
}
}
//子类
class Cat{
//Cat的move方法应该输出:猫在走猫步
//Animal中的move方法无法满足Cat了
//所以要在Cat类中对Animal类中的move方法进行重新定义(方法的覆盖 方法的重写 Overwrite Override)
public void move(){
System.out.println("猫在走猫步");
}
}