一:基本介绍
简单的说:方法覆盖(重写)就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样,那么我们就说子类的这个方法覆盖了父类的方法
二:需要满足的条件
- 子类的方法的形参列表,方法名称,要和父类方法的形参列表,方法名称完全一样。
子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类比如交类返回类型是Object ,子类方法返向类型是String ```java class Person{ public void eat(){
} } class man extends Person{ @Override public void eat() {
System.out.println();
} }
3. **_子类方法不能缩小父类方法的访问权限【演示】public > protected >默认>private (只能扩大权限)_**```javaclass Person{void eat(){}}class man extends Person{@Overridepublic void eat() {System.out.println();}}
三:比较
四:练习
:::danger
(1)编写一个 Person 类,包括属性/private(name、age),构造器、方法 say(返回自我介绍的字符串)。
(2) 编写一个 Student 类,继承 Person 类,增加 id、score 属性/private,以及构造器,定义 say 方法(返回自我介绍的信息)。
(3)在main 中,分别创建 Person 和 Student 对象,调用 say 方法输出自我介绍
:::
public class testOveride {public static void main(String[] args) {Person sakura = new Person("sakura", 18);Student sakura12 = new Student("sakura12", 19, 1001, 100);System.out.println(sakura.say());System.out.println(sakura12.say());}}class Person {private String name ;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String say(){return "name:"+ this.name + " age:" + this.age;}}class Student extends Person{private int id;private int score;public Student(String name, int age, int id, int score) {super(name, age);this.id = id;this.score = score;}@Overridepublic String say() {return super.say() + "id:" + id + " score:" + score ;}}
