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();
}
}

浙公网安备 33010602011771号