方法重写只针对非静态方法,且不能是 private 类型的
如果是静态方法
// 重写都是方法的重写,和属性无关
public class B {public static void test() {System.out.println("B=>test()");}
}
// 继承
public class A extends B{public static void test() {System.out.println("A=>test()");}
}
public class Application {public static void main(String[] args) {A a = new A();a.test(); // A// 父类的引用指向了子类B b = new A();b.test(); // B}
}
静态方法:方法的调用只和左边定义的数据类型有关
非静态方法
// 重写都是方法的重写,和属性无关
public class B {public void test() {System.out.println("B=>test()");}
}
// 继承
public class A extends B{// Override 重写@Override // 注解:有功能的注释public void test() {
// super.test();System.out.println("A=>test()");}
}
public class Application {// 静态方法和非静态的方法的区别很大!// 静态方法: 方法的调用只和左边定义的数据类型有关// 非静态: 重写public static void main(String[] args) {A a = new A();a.test(); // A// 父类的引用指向了子类B b = new A(); // 子类重写了父类的方法b.test(); // A}
}
重写:需要有继承关系,子类重写父类的方法!1. 方法名必须相同2. 参数列表必须相同3. 修饰符:范围可以扩大但是不能缩小: public>Protected>Default>Private4. 抛出的异常:范围,可以被缩小,但不能扩大: ClassNotFoundException--> Exception(大)重写: 子类的方法和父类必须一致;方法体不同为什么需要重写:父类的功能,子类不一定需要,或者不一定满足Alt + Insert Overtide
https://www.bilibili.com/video/BV12J41137hu?p=70