java继承静态方法6_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();

}

结果

3b8da9d6bf8e?utm_campaign

Paste_Image.png

从代码中可以看到,在子类中静态方法不能用@Override注解,用的话会报错;从输出结果可以看出,子类并没有复写父类的静态方法,这是为什么呢?

因为方法加了static关键字修饰后,静态是随着类的加载而加载的,优先于对象存在,所以该方法就属于类的,可以用类名直接调用,子类不能复写。

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

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

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值