12. “static关键字是什么意思”,Java中是否可以覆盖(override)一个private或者是static的方法
12. “static关键字是什么意思”,Java中是否可以覆盖(override)一个private或者是static的方法
-
意思:表示被static修饰的属性和方法可以在不需要实例化的情况下调用属性或者方法。
-
不能覆盖private方法,它是一个私有的,只对当前类有效。子类无法方法父类的方法,也不能重写覆盖它
class Parent {private void display() {System.out.println("Parent's private method");} }class Child extends Parent {@Overridevoid display() { // 编译错误!父类的 display() 是 private 的,无法覆盖System.out.println("Child's display method");} }public class Main {public static void main(String[] args) {Parent obj = new Child();obj.display(); // 如果能覆盖,应输出 "Child's display method"} }
-
不能覆盖static方法,它是一个静态的资源,在独立的数据存储空间里。覆盖这个行为它是运行时动态绑定的,而static是静态绑定的,无法访问到static方法。
class Parent {static void display() {System.out.println("Parent's static method");} }class Child extends Parent {static void display() { // 隐藏父类的 static 方法System.out.println("Child's static method");} }public class Main {public static void main(String[] args) {Parent obj = new Child();obj.display(); // 输出 "Parent's static method"!不是子类的方法} }