父类、子类同名的静态方法不存在继承关系

父类、子类同名的静态方法不存在继承关系

我查阅了网络资料,发现老师讲得这块有问题,就是静态方法存不存在继承关系。如果存在继承关系,一定可以实现重写,一定可以多态编写吧。

下面的话取自CSDN

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

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

总结:

1)子类是不继承父类的static变量和方法的。因为这是属于类本身的。但是子类是可以访问的。 
2)子类和父类中同名的static变量和方法都是相互独立的,并不存在任何的重写的关系。

无论是static修饰的变量,还是static修饰的方法,我们都知道他们是属于类本身的,不是属于某一个对象的,当声明一个对象时,并不产生static变量和方法的拷贝。也就是说,用static修饰的变量和方法在类加载的时候,只分配一块存储空间,所有此类的对象都可以操控此块存储空间;


注:这里要说明的时,当子类没有与之同名的static变量(或方法时),子类的对象也可以操控这块内存空间。但是子类并没有继承父类中static修饰的变量和方法。因为static修饰的变量和方法是属于父类本身的。

————————————————

版权声明:本文为CSDN博主「HelloWorld_EE」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u010412719/article/details/49254017

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿园 2021-07-15 16:59:30

同学你好,老师并没讲错哦,static 属性和方法是可以继承的

我们可以自己写一个类来测试一下:

http://img1.sycdn.imooc.com//climg/60eff897096b9fe011130561.jpg

http://img1.sycdn.imooc.com//climg/60eff8a909d6cca808510245.jpg

当父类写了这个静态的属性时,子类可以通过子类的类名来调用这个属性的,其实就可以说明,是继承了
目前没有可以使用,但不是继承这一说法哦
有一个工具是 jclasslib: 当我们分析ST1的时候,可以看到,他的Fields count 为0  ,说明这并不是他的属性,但是他却可以使用,这就说明了,是继承了父类的属性

http://img1.sycdn.imooc.com//climg/60eff8d809dfc93213370486.jpg

祝学习愉快~


  • 提问者 做条咸鱼才最好 #1

    这里只是说明引用了父类的方法,比如具有同名方法时,会隐藏父类方法而不是重写父类方法去调用子类方法。

    static表示这个变量和方法属于整个类的,作为子类确实可以去访问他,但这不是继承,类比现实例子,父亲的眼睛耳朵这些属性可以继承,但能完成把一摸一样的父类克隆给子类吗?不能把,static我理解就是父类特有的属性和行为,子类可以去调用,但不能继承。


    2021-07-15 20:41:32
  • 提问者 做条咸鱼才最好 #2

    刚看了下网上解释和老师的解释,我错了,确实可以继承,只不过和普通继承不一样。?

    2021-07-15 21:12:17
  • 同学理解了就好,很棒呐,继续加油呦

    祝学习愉快~

    2021-07-16 09:44:22
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师