首页 > 技术文章 > Java静态方法能否被继承

jrkl 2021-03-10 14:19 原文

public class Main {
    public static void main(String[] args) {
        B b = new B();
        b.staticMethod(); // B静态方法

        A a = b;
        a.staticMethod(); // A静态方法

        C c = new C();
        c.staticMethod(); // A静态方法

    }
}

class A { //父类
    public static void staticMethod() {
        System.out.println("A静态方法");
    }
}

class B extends A {
    public static void staticMethod() {
        System.out.println("B静态方法");
    }
}

class C extends A {
}

1、结论

结论是Java的静态方法和静态属性都可以被继承,但是他们不可以被重写(Overwrite)。

2、原因

  • 静态方法和静态属性是属于类的,不是属于对象的。
  • 不可以被重写,也就不能实现多态
  • 如果在子类中定义和父类一模一样的静态方法或静态属性,父类的静态方法和静态属性会被屏蔽。  

推荐阅读