![](/img/trans.png)
[英]How do I access a boolean from another class in the constructor of an object?
[英]How do I access an object from another class in java?
如何從另一個 java 文件訪問 object?
Class1.java:
public class Class1 {
Classx obj = new Classx(); //Classx is another public class, in another file, i'm just making an object in Class1.
}
Class2.java:
public class Class2{
System.out.println(obj.property); // this doesn't work.
}
為什么在 Class2 中無法訪問 obj.property?
好吧,一件事是您不能在 class 定義中運行任意代碼行(System.out.println),因此您的示例無效。
obj
是 Class1 中的“實例變量”——Class 2 需要引用Class1 的 object 才能訪問該實例的“obj”成員。
// in Classx.java
public class Classx {
}
// in Class1.java
public class Class1 {
Classx obj = new Classx();
}
// in Class2.java
public class Class2 {
Class1 anObj = new Class1();
public void showIt() {
System.out.println(anObj.obj);
}
}
// in TestProg.java
public class TestProg {
public static void main(String... args) {
Class2 two = new Class2();
two.showIt();
}
}
由於 Class1 中的obj
未聲明為public ,實際上沒有給出修飾符,因此它具有默認訪問權限package ,因此 Class1 和 Class2 需要在同一個 package 中才能允許使用anObj.obj
。
私有對象
public class Class1
{
//...
Classx obj = new Classx();
//...
public Classx getClassx()
{
return obj;
}
}
和
public class Class2
{
//...
Class1 c1 = new Class1();
System.out.println(c1.getClassx().property);
}
公共對象
public class Class1
{
public Classx obj = new Classx();
//...
}
和
public class Class2
{
//...
Class1 c1 = new Class1();
System.out.println(c1.obj.property);
}
Static 公共對象
public class Class1
{
//...
public static Classx obj = new Classx();
//...
}
和
public class Class2
{
System.out.println(Class1.obj.property);
}
為了訪問位於不同 class 中的字段,您需要使用點表示法。 在這種情況下,要訪問obj
字段,您需要使用Class1
的實例。
Class1 c1 = new Class1();
//Code to instantiate all the variables, etc.
System.out.println(c1.obj.property);
上面的代碼假設property
是Classx
中的一個字段。
如果obj
字段被聲明為static
,您將能夠使用 class 本身而不是實例來訪問它:
System.out.println(Class1.obj.property);
在實踐中,像這樣的字段通常被聲明為private
,在這種情況下,可以提供訪問器方法來訪問它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.