美文网首页
Java中关于静态方法的继承

Java中关于静态方法的继承

作者: godream | 来源:发表于2017-02-16 11:10 被阅读0次

    静态一直非常神秘的存在
    父类代码

       class Parent {
            public void method() {
                System.out.println("parent method");
            }
    
            public static void staticMethod() {
                System.out.println("parent static method");
            }
        }
    

    子类代码

     class Child extends Parent {
            @Override
            public void method() {
                System.out.println("child method");
            }
    
            //@Override  error:Method does not override method from its superclass
            public static void staticMethod() {
                System.out.println("child static method");
            }
        }
    

    测试输出

        public static void main(String[] arg) {
            Parent parent = new Child();
            parent.method();
            parent.staticMethod();
        }
    

    结果

    Paste_Image.png

    从代码中可以看到,在子类中静态方法不能用@Override注解,用的话会报错;从输出结果可以看出,子类并没有复写父类的静态方法,这是为什么呢?
    因为方法加了static关键字修饰后,静态是随着类的加载而加载的,优先于对象存在,所以该方法就属于类的,可以用类名直接调用,子类不能复写。

    总结:父类的静态方法可以被子类继承,但是不能重写。

    小拓展:内部类中如果有静态字段或静态方法,则这个内部类也必须用静态修饰,否则会报Inner classes cannot have static declarations错误。

    参考链接

    子类能否重写父类的静态方法

    相关文章

      网友评论

          本文标题:Java中关于静态方法的继承

          本文链接:https://www.haomeiwen.com/subject/iswcwttx.html