Java面向对象7-方法覆盖

2017-01-13  本文已影响0人  buzhidao_

遇到什么问题

子类拓展了父类,可以获得父类的部分方法和成员变量。可是当父类的某个方法不适合于子类本身的特征时,此时怎么办?
如:企鹅是鸟类中的一个特殊品种,所以企鹅类是鸟类的一个子类,但是鸟类有飞翔的功能,但是对应企鹅,飞翔的行为显然不适合于它。

怎么解决

使用方法覆盖(Override)

什么是方法覆盖

当父类的某一个行为不符合子类具体的特征的时候,此时子类需要重新定义父类的方法,并重写方法体.

方法覆盖规则(Override)(一同两小一大):

//方法覆盖 Override : 解决了子类继承父类后,父类方法不适合于子类的问题
public class OverrideDemo {
    public static void main(String[] args) {
        Bird bird = new Bird();
        Penguin penguin  = new Penguin();
        bird.fly();//我是鸟类,我会飞
        penguin.fly();//我是企鹅,但是我飞不了
    }
}
//鸟类,有会飞的功能
class Bird {
    public void fly() {
        System.out.println("我是鸟类,我会飞");
    }
}
//企鹅类,但是不会飞
class Penguin extends Bird {
    //方法覆盖原则,一同两小
    //同:方法名相同 :方法签名= 方法名 + 方法的参数列表
    public void fly() {
        System.out.println("我是企鹅,但是我飞不了");
    }
}
上一篇 下一篇

猜你喜欢

热点阅读