我已经在 1000 个位置读到静态变量不能被继承。但是这段代码如何正常工作呢?
父类.java
public class Parent {
static String str = "Parent";
}
孩子.java
public class Child extends Parent {
public static void main(String [] args)
{
System.out.println(Child.str);
}
}
此代码打印“Parent”。
还可以在几个位置阅读数据隐藏的概念。
父类.java
public class Parent {
static String str = "Parent";
}
孩子.java
public class Child extends Parent {
static String str = "Child";
public static void main(String [] args)
{
System.out.println(Child.str);
}
}
现在输出是“Child”。
那么这是否意味着静态变量是继承的,但它们遵循数据隐藏的概念?
“遗传”不是对正在发生的事情的理想描述;更好的描述方式是说静态变量是shared基类的子类之间。
所有派生类都可以访问其基类的静态变量。这包括受保护的变量,反映继承变量的情况。
隐藏的概念也适用:当特定于类的变量str
出现在Child
类,它隐藏了str
父类的变量。
请注意,变量str
基类的属性不会变得不可访问:Child
仍然可以通过完全限定名称来访问它Parent
class.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)