java static 继承_java 子类不能继承父类的static方法

先来看一段代码

/*** Created by bjchengpeng on 2018/7/19.*/

/**

运行结果* woof

* woofaa

*

* woof

* Basenjiaa

*

* Basenji

* Basenjiaa*/

public classBark {public static voidmain(String[] args) {

Dog woofer= newDog();

Dog nipper= newBasenji();

Basenji child= newBasenji();

woofer.bark();

woofer.aa();

System.out.println();

nipper.bark();

nipper.aa();

System.out.println();

child.bark();

child.aa();

}

}classDog {public static voidbark() {

System.out.println("woof");

}public voidaa() {

System.out.println("woofaa");

}

}class Basenji extendsDog {public static voidbark() {

System.out.println("Basenji");

}public voidaa() {

System.out.println("Basenjiaa");

}

}

对于static修饰的变量,当子类与父类中存在相同的static变量时,也是根据“静态引用”而不是根据“动态引用”来调用相应的变量的。

而在父类和子类中对于非static变量和方法,是根据“动态引用”来调用相应的变量和方法。

然而,接着会有这样的问题存在:java中 子类会不会继承父类的static变量和static方法

1)先说static方法:子类会不会继承父类的static方法呢??答案是:不会的,但是是可以访问的。

看如下的代码

public classParent {public static voidstaticMethod(){

System.out.println("Parent staticMethod run");

}

}public class Son extendsParent {//...

}

测试类

packagecom.wrh.teststaticmethod;public classTest {public static voidmain(String[] args) {

Parent child=newSon();

child.staticMethod();//输出:Parent staticMethod run

Son s=newSon();

s.staticMethod();//输出:Parent staticMethod run

}

}

运行结果如下

Parent staticMethod run

Parent staticMethod run

从上面的运行结果可以看出,static方法是可以被子类访问的。

2)接着来看父类的static修饰的变量,是否能够被子类继承呢??

答案:也是不可以的。但是也是可以被子类访问的。

小结

1)子类是不继承父类的static变量和方法的。因为这是属于类本身的。但是子类是可以访问的。

2)子类和父类中同名的static变量和方法都是相互独立的,并不存在任何的重写的关系。

参考  https://blog.csdn.net/u010412719/article/details/49254017  Java中子类是否可以继承父类的static变量和方法而呈现多态特性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值