Java:从不相关的类访问公共成员吗?

| 以下Java代码是我需要的代码的精简示例。我的问题是,如何从Second类内部访问someInt?请注意,Second实现了另一个类,因此我不能只传递someInt。
package test1;

public class First {
    public int someInt;

    public static void main(String[] args) {
        First x = new First();
    }

    public First(){
        someInt = 9;
        Second y = new Second();
    }
}


class Second implements xyz{
    public Second(){}

    public void doSomething(){
        someInt = 10; // On this line, the question lies.
        System.out.println(someInt);
    }
}
    
已邀请:
您无法访问
Second
中的
First
\的
someInt
字段,因为
Second
不是
First
的内部类。以下更改将解决您的问题。
package test1;

public class First {
    public int someInt;

    public static void main(String[] args) {
        First x = new First();
    }

    public First(){
        someInt = 9;
        Second y = new Second();
    }

    class Second {
        public Second(){
            someInt = 10;
            System.out.println(someInt);
        }
    }
}
    
如果需要访问
First
中的字段(而不是在
Second
中创建新字段),则在创建
Second
实例时需要将引用传递给
First
实例。
        Second y = new Second(this);
    }
}


class Second {
    public Second(First f){
        f.someInt = 10;
用您的问题“从不相关的类访问公共成员”来解决此问题,方法是创建一个关系。如果不允许这样做,那么此答案是错误的。     
访问公共成员遵循与访问公共方法相同的语法规则(只是没有方括号) 但是,在课堂上安排一个公开成员通常不是一个好主意     
最直接的方法是 1)首先实例化
First f = new First()
2)直接访问它,因为您将实例变量设为someInt
f.someInt = 10
更好的方法是在First中为someInt提供访问器,然后这样做。
First f = new First();
f.setSomeInt( 10 );
...
int x = f.getSomeInt();
    
在您的第二堂课中,您必须具有第一课对象。在第二个类中创建该对象,然后就可以访问someInt。     
因为
someInt
不是静态的,所以您需要获得对
First
实例的引用。     

要回复问题请先登录注册