Java基础笔记26——覆盖

一、重写(overwrite)| 覆盖(override):对父类中继承过来的方法进行改造

 

条件:基于继承关系



原则:

1.方法名一致

2.参数列表一致(参数个数一致,参数类型一致,参数顺序一致)

3.返回值类型一致

4.子类的方法修饰符权限 >= 父类的方法修饰符权限



二、重载(overload):基于同一类,调用同一方法名,传入不同的参数,实现统一功能



条件:基于同一类



原则:

1.方法名一致

2.参数列表一致(参数个数不一致或者参数类型不一致或者参数顺序不一致)

3.返回值类型可以一致,可以不一致



Shift + Alt +S,选中Override/Implement methods:重写方法

 

例子:

 

Animal.java:

package com.lqh.chapter02;

public class Animal {
    // 属性(成员变量)
    String color;
    String brand;
    int age;

    public Animal() {
        System.out.println("父类实例化---Animal");
    }

    public Animal(String brand, String color, int age) {
        this.brand = brand;
        this.color = color;
        this.age = age;
        System.out.println("父类实例化---Animal");
    }

    // 行为(成员方法)
    public void eat() {
        System.out.println("吃东西!");
    }

    public void sleep() {
        System.out.println("睡觉!");
    }

    public void getDetail() {
        System.out.println("brand:" + brand + "\tcolor:" + color + "\tage:" + age);
    }
}

 

Cat.java:

package com.lqh.chapter02;

public class Cat extends Animal{
    //属性(成员变量)
    String area;
    public Cat(String brand, String color, int age, String area) {
        super(brand, color,age);//调用父类的有参构造函数
        this.area = area;
    }
    public void getDetail() {//父类方法的重写
        System.out.println("brand:" + brand + "\tcolor:" + color + "\tage:" + age + "\tarea" + area);
    }
}

 

Test02.java:

package com.lqh.chapter02;

public class Test02 {
    public static void main(String[] args) {
        Cat lihua = new Cat("狸花猫", "white and black", 2, "中国大陆");
        /*
         * 当子类officer重写父类的getDetail方法之后,再调用该方法时,执行子类自己重写过的方法
         */
        lihua.getDetail();
    }
}

 

输出结果:

父类实例化---Animal
brand:狸花猫 color:white and black age:2 area中国大陆

posted @ 2021-09-14 23:07  `青红造了个白`  阅读(66)  评论(0编辑  收藏  举报