Java中关于静态方法的继承

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

   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错误。

参考链接

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,627评论 0 11
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 11,951评论 0 62
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,443评论 18 399
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,433评论 0 3
  • 1 面向对象No6 面向对象 OO Object Oriented 编程时以对象为单元,封装数据和逻辑,以此提...
    征程_Journey阅读 4,911评论 0 2

友情链接更多精彩内容