Java-继承_方法重写

一、概念

1.方法重写/方法覆盖

子类中如果创建了一个与父类中,
相同名称相同返回值类型相同参数列表的方法,
只是方法体中的实现不同,以


2.作用

  • 实现不同于父类的功能

3.注意

  • 重写的方法可以使用@Override注解来标识
  • 父类的成员方法只能被它的子类重写。
  • 声明为final的方法不能被重写。
  • 声明为static的方法不能被重写,但是能够再次声明。
  • 构造方法不能被重写。
  • 子类和父类在同一个包中时,子类可以重写父类的所有方法,除了声明为 private 和 final 的方法。
  • 子类和父类不在同一个包中时,子类只能重写父类的声明为 public 和 protected 的非 final 方法。
  • 如果不能继承一个方法,则不能重写这个方法。

二、代码

@Override

父类

package com.nsys.class01;

public class Animal {
    // 添加类属性
    public String name;
    public int age;

    // 添加构造方法
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println("调用父类构造方法" + this.name);
    }

    // 添加类方法
    public void speak() {
        System.out.println("调用父类方法" + this.name);
    }
}

子类

package com.nsys.class01;

// 继承父类Animal
public class Cat extends Animal {
    // 添加子类特有属性
    public String hobby;

    // 创建子类构造方法
    public Cat(String name,int age,String hobby) {
        super(name, age);
        this.hobby = hobby;
        System.out.println("然后调用子类的构造方法");
    }

    // 重写父类方法
    // @Override可以避免方法名/参数写错
    @Override
    public void speak() {
        System.out.println("调用重写的父类方法");
    }
}

主函数

package com.nsys.class01;

public class Main {
    public static void main(String[] args) {
        // 实例化Cat对象
        // Animal->Cat;父类类型的引用指向子类的对象
        Animal c = new Cat("miao",1,"eat");
        c.speak();
    }
}

posted @ 2021-11-03 15:55  难删亦删  阅读(240)  评论(0)    收藏  举报