方法重写
- 重写都是方法的重写,和属性无关
- 重写只和非静态方法有关,和静态方法无关
- 重写的关键词只能是public
重写:
-
重写需要有继承关系,子类重写父类的方法
-
参数列表必须相同
-
修饰符:范围只能扩大不能缩小(public <-- protected <-- default <-- private)
-
抛出的异常范围可以缩小不能扩大
-
子类的方法和父类必须要一致,方法体不同
为什么需要重写
- 父类的功能,子类不一定需要或不一定满足
(1)静态方法的调用只和(左边)定义的数据有关
package Demo06;
public class B {
public static void test(){
System.out.println("B-->test()");
}
}
package Demo06;
public class A extends B{
public static void test(){
System.out.println("A-->test()");
}
}
父类的引用可以指向子类
package Demo06;
public class Application {
public static void main(String[] args) {
//方法的调用只和(左边)定义的数据有关
A a = new A();
a.test();//调用A类的方法
//父类的引用指向了子类
B b = new A();
b.test();//调用B类的方法
}
}
运行结果
A-->test()
B-->test()
(2)非静态方法的重写
把上面的静态方法改成非静态方法
对A类:Alt + Ins ——>重写方法
然后就会出现这个
重写一下里面的方法
package Demo06;
public class A extends B{
@Override //注解:有功能的注释1
public void test() {
System.out.println("A-->test()");
}
}
B类和main方法不变
运行结果