先说结论哈
首先回答一个问题: 为什么要重写?
1、父类的功能子类不一定需要,或者父类的方法无法满足子类的相关需求
-
重写需要有继承关系,子类重写父类的方法
-
重写的方法名必须相同,也就是子类的方法和父类的方法必须一致,只有方法体不同
-
重写的修饰符,只能扩大不能缩小,public>protected>Default>private
-
重写抛出的异常只能缩小,不能扩大;ClassNotFoundException(小)—>Exception(大)
###示例如下:
父类
package com.oop.Override;
public class A {
//静态方法
// public static void test(){
// System.out.println("A->test");
// }
public void test(){
System.out.println("A->test");
}
}
子类
package com.oop.Override;
public class B extends A {
//静态方法
// public static void test(){
// System.out.println("B->test");
// }
@Override
public void test() {
// super.test();
System.out.println("我完成重写了");
}
}
测试类
package com.oop.Override;
public class Application {
public static void main(String[] args) {
//静态方法:方法的调用只和左边有关系,b调用b的方法 B->test,a调用a的方法 A->test
//非静态方法:结果全是B->test, 重写只存在于非静态方法中, @Override代表重写
//重写方法的修饰符只能是public
B b=new B();
b.test();
//父类的引用指向了子类
A a=new B();//子类重写了父类的方法
a.test();
}
}



