1

我在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);
    }
}

我有以下问题,

  1. 我可以使用new FirstClass.classNamenew SecondClass().className访问 className 变量值,这是创建对象还是这里发生的函数是什么?

  2. 我将 FirstClass 扩展到 SecondClass,我可以使用new SecondClass().arg访问arg变量,现在如何使用扩展类访问 Base 类中的className变量?

4

2 回答 2

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-methods。

于 2013-08-19T10:28:41.760 回答
2

从外部,您可以强制转换为基本类型以访问该字段:

System.out.println(((FirstClass)new SecondClass()).className);
于 2013-08-19T10:32:39.453 回答