Java 从其他类访问值以及如何访问基类变量
我尝试了一些java代码来访问变量,我的代码如下Java 从其他类访问值以及如何访问基类变量,java,Java,我尝试了一些java代码来访问变量,我的代码如下 class FirstClass { public String className = "FirstClass"; int arg=100; private String insideVariable="Private"; } class SecondClass extends FirstClass{ public String className="SecondClass"; public String
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);
}
}
我有以下问题,
在
1.
中,您使用new
创建匿名实例,并访问其成员className
在
2.
中,您可以在派生类中使用super.className
class SecondClass extends FirstClass{
public String className="SecondClass";
public String extend=new FirstClass().className;
public void method() {
String cn = super.className;
}
}
除了这些可能性之外,您正在将OO数据隐藏原理磨碎。
如果要访问基类成员,请使基类成员受保护或在
1中创建getter/setter
-方法。。
您正在使用new
创建匿名实例,并访问其成员className
在
2.
中,您可以在派生类中使用super.className
class SecondClass extends FirstClass{
public String className="SecondClass";
public String extend=new FirstClass().className;
public void method() {
String cn = super.className;
}
}
除了这些可能性之外,您正在将OO数据隐藏原理磨碎。
如果要访问基类成员,请使基类成员
受保护
或创建getter/setter
-methods.从外部强制转换到基类以访问字段:
System.out.println(((FirstClass)new SecondClass()).className);
从外部,可以强制转换为基类型以访问字段:
System.out.println(((FirstClass)new SecondClass()).className);
你为什么要这样做呢?如果您遵循正常的最佳实践(字段是私有的),那么这并不是一个问题。为什么您要从这开始呢?如果您遵循正常的最佳实践(字段是私有的),那么从一开始就不是问题。