方法重写
为什么要重写?
- 父类的功能,子类不一定需要,或子类需要的更多!
特点:
- 子类和父类需要有继承关系
- 重写是对父类可访问的方法的重写,和属性无关
- 声明为 final 的方法不能被重写
- 声明为 static 的方法不能被重写,但是能够被再次声明
- 修饰符的范围可以扩大但不能缩小。(public > protected > Default > private)
- 抛出的异常范围可以被缩小,但不能扩大
- 返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类。(java5 及更早版本返回类型要一样,java7 及更高版本可以不同)
- 方法名、返回值、形参必须相同,方法体不同。(外壳不变,核心重写)
例:
package com.wnaoii.oop.Demo05;
public class Person {
public void say() {
System.out.println("Person会说话!");
}
}
package com.wnaoii.oop.Demo05;
public class A extends Person {
@Override
public void say() {
System.out.println("A不但会说,还会唱、跳、Rep!");
}
}
package com.wnaoii.oop;
import com.wnaoii.oop.Demo05.Person;
import com.wnaoii.oop.Demo05.A;
public class Application {
public static void main(String[] args) {
Person person = new Person();
person.say();
A a = new A();
a.say();
}
}
输出:
Person会说话!
A不但会说,还会唱、跳、Rep!