方法的重写覆盖

1、方法覆盖的使用时机

当父类中的方法已经无法满组当前子类的业务需求,子类有必要将父类中继承过来的方法进行重新编写,这个重新编写的过程叫做方法的重写/方法覆盖。

2、方法重写的条件

建议进行重写时,尽量复制粘贴,避免出现错写情况,导致未发生重写。

方法重写发生在具有继承关系的父子类之间

方法重写时:返回值类型相同,方法名相同,形参列表相同

方法重写时:访问权限不能更低,只能更高,子类高于父类

方法重写时:抛出异常不能更多,可以更少。

注意:

私有方法不能继承,所以不能覆盖。

构造方法不能继承,所以不能覆盖。

静态方法不存在覆盖。

覆盖只针对方法,不谈属性。

//测试类
public class AnimalTest {
    public static void main(String[] args) {
        Animal a = new Animal();
        a.move();

        Cat c = new Cat();
        c.move();

        Bird b = new Bird();
        b.move();
    }
}
//动物类
public class Animal {
    public void move(){
        System.out.println("动物在移动!");
    }
}

//猫科类
public class Cat extends Animal{
   // public void Move(){若此函数名写成大写,则输出结果c.move还是输出动物在移动,因为此类中未发生重写。
     public void move() {
         System.out.println("猫在走猫步!");
     }
    }
}
//鸟类
public class Bird extends Animal{
    public void move(){   
    		System.out.println("鸟儿在飞翔!")
    }
}
输出结果:
动物在移动!
猫在走猫步!
鸟儿在飞翔!

分析:注意第23行代码,如果出现复写失败的话,程序就会找到该类的父类,对父类中的同名方法进行操作。例如猫类中继承鸟类,鸟类继承动物类。而猫类中如果写错成Move方法,那么主程序中执行的仍然是Cat中的move方法,虽然没有写出来,但是这个方法是确实从父类Animal中继承过来的。因为此时并未发生重写(或者说重写失败了)那么输出将会是:动物在移动! 动物在移动!鸟儿在飞翔!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值