Java笔记,方法覆盖

回顾java语言当中方法的重载,可以和构造函数(方法)这篇一起看。
  • 1.方法重载又称为Overlord

  • 2.方法重载什么时候使用?
    当在同一个类当中,方法完成的功能是似的的,建议方法名相同,这
    就像在调用一个方法似的。代码美观。

  • 3.什么时候满足之后构成方法重载?
    * 在同一个类当中
    * 方法名相同
    * 参数列表不同:类型、顺序、个数

  • 4.方法重载和什么无关?
    * 和方法的返回值类型无关
    * 和方法的修饰符列表无关
    *

关于java语言当中,方法的覆盖:
  • 1.方法覆盖 又被称为方法重写,英语单词:override【官方】

  • 2.什么时候使用方法重写?
    当父类中的方法已近无法满足当前子类的业务需求。
    子类有必要将父类中继承过来的方法进行重写,
    这个重新缩写的过程称为方法重写/方法覆盖。

  • 3.什么条件满足之后发生重写呢 ?【代码满足什么条件之后,构成方法
    * 方法重写发送在具有继承关系的父子类之间
    * 方法重写的时候:返回值类型相同,形参列表不同
    * 方法重写的时候:访问权限不能更低,可以更高。publi
    * 方法重写的时候:抛出异常不能更多,可以更少。 【以后讲】

  • 4.建议方法重写的时候尽量使用软件自带的功能生成,不要编写,容易出
    IDEA的快捷键,Ctrl + O

  • 5.注意:
    私有方法不能继承,所以不能覆盖。
    构造方法不能继承,所有不能覆盖。
    静态方法不存在覆盖。【讲完多态之解释】
    覆盖只针对方法,不谈属性。


测试类(OverrideTest01)

public class OverrideTest01 {
    
    

    public static void main(String[] args) {
    
    

        // 创建动物对象
        Animal a = new Animal();
        a.move();

        // 创建猫科类动物对象
        Cat c = new Cat();
        c.move();

        // 创建飞禽类动物对象
        Bird b = new Bird();
        b.move();

        // 创建鹦鹉对象
        YingWu y = new YingWu();
        y.move();
    }

}

动物类(Animal.class)

// 动物类
public class Animal {
    
    

    // 动物都是可以移动的
    public void move(){
    
    
        System.out.println("动物在移动...");
    }
}

飞禽类(Bird.class)

// 飞禽类
public class Bird extends Animal{
    
    

    // 方法重写
    public void move(){
    
    
        System.out.println("鸟儿在飞翔...");
    }
}

鹦鹉类(YingWu.class),这里的move方法覆盖的是Bird当中的move方法,而不是Animal中的move方法,可以用注释代码的形式进行测试。

public class YingWu extends Bird{
    
    

    // 这里的move方法覆盖的是Bird当中的move方法
    // 而不是Animal中的move,可以用注释代码的形式进行测试。
    public void move(){
    
    
        System.out.println("鹦鹉飞不起来!");
    }
}

运行结果:

动物在移动...
猫在走猫步...
鸟儿在飞翔...
鹦鹉飞不起来!

注释掉鹦鹉类的move重写方法
运行结果:

动物在移动...
猫在走猫步...
鸟儿在飞翔...
鸟儿在飞翔...

你会发现最后一个输出的结果不是"动物在移动…", 而是"鸟儿在飞翔…",很明显的说明,鹦鹉类继承的是飞禽类的move方法。

猜你喜欢

转载自blog.csdn.net/weixin_44630560/article/details/105791238
今日推荐