1、子类重写父类静态方法,变为非静态方法会报错。
public class Person {
public static void method(){
System.out.println("Person");
}
}
public class Man extends Person {
public void method(){
System.out.println("Man");
}
}
报错信息: This instance method cannot override the static method from Person overrides com.heima.jedis.Person.method
此实例方法不能覆盖来自Person的静态方法,该方法覆盖com.heima.jedis.Person.Method
2、子类重写父类静态方法,父类变量指向子类,调用重写的静态方法,访问的是父类的静态方法。
public class Person {
public static void method(){
System.out.println("Person");
}
}
public class Man extends Person {
public static void method(){
System.out.println("Man");
}
}
public static void main(String[] args) throws Exception {
Person man = new Man();
man.method();
}

本文探讨了Java中子类重写父类静态方法的常见误区,包括将静态方法改为实例方法导致的编译错误,以及即使正确重写静态方法,父类引用调用的仍是父类方法的现象。通过具体代码示例,深入解析了静态方法的覆盖规则及其实现机制。
526

被折叠的 条评论
为什么被折叠?



