我在java中尝试了一些代码来访问变量,我的代码如下
class FirstClass {
public String className = "FirstClass";
int arg=100;
private String insideVariable="Private";
}
class SecondClass extends FirstClass{
public String className="SecondClass";
public String extend=new FirstClass().className;
}
public class Access {
public static void main(String[] args) {
System.out.println(new FirstClass().className);
System.out.println(new SecondClass().className);
System.out.println(new SecondClass().arg);
System.out.println(new SecondClass().extend);
}
}
我有以下问题,
我可以使用 new FirstClass.className 和 new SecondClass()。className 来访问className变量值,这是创建对象还是什么是功能发生在这里?
我正在将FirstClass扩展为SecondClass,我可以使用 new SecondClass()。arg 访问 arg 变量,现在如何访问Base类中的 className 变量使用扩展类?
答案 0 :(得分:3)
在1.
中,您使用new
创建匿名实例,并访问其成员className
。
在2.
中,您可以使用super.className
INSIDE 您的派生类。
class SecondClass extends FirstClass{
public String className="SecondClass";
public String extend=new FirstClass().className;
public void method() {
String cn = super.className;
}
}
除了这种可能性之外,您正在研究数据隐藏的OO原则。
如果要访问基类成员,请创建基类成员protected
或创建getter/setter
- 方法。
答案 1 :(得分:2)
从外部,您可以转换为基本类型以访问该字段:
System.out.println(((FirstClass)new SecondClass()).className);