Are static variables inherited

泄露秘密 提交于 2019-11-27 01:56:34

Please have a look into the documentation of oracle: http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#d5e12110

Static variables are inherited as long as their are not hidden by another static variable with the same identifier.

"Inherited" is not an ideal description of what is happening; a better way to describe it would be to say that static variables are shared among the subclasses of the base class.

All derived classes obtain access to static variables of their base classes. This includes protected variables, mirroring the situation with variables that are inherited.

The concept of hiding applies as well: when a class-specific variable str appears in the Child class, it hides the str variable of the parent class.

Note that the variable str of the base class does not become inaccessible: Child can still access it by fully qualifying with the name of Parent class.

This is not exactly inheritance, its more like sharing having access to the static attribute of the class you are extending unless you are hiding it by declaring the same identifier in you subclass, note that in case of instance attribute if you change the value of the inherited attribute it will be changed in the super instance which was instantiated for your object but if there is another hierarchy which will be supposedly blind to your hierarchy it will not be affected.

In the case of static the parent attribute will be changed and any other hierarchy will take this effect too.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!