如何从java中的另一个类访问对象?
如何从另一个java文件访问对象 Class1.java:如何从java中的另一个类访问对象?,java,Java,如何从另一个java文件访问对象 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
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.
}
为什么在类2中无法访问obj.property?要访问位于不同类中的字段,需要使用点表示法。在这种情况下,要访问
obj
字段,需要使用Class1
的实例
Class1 c1 = new Class1();
//Code to instantiate all the variables, etc.
System.out.println(c1.obj.property);
上面的代码假设属性
是Classx
中的一个字段
如果将obj
字段声明为static
,则可以使用类本身而不是实例来访问它:
System.out.println(Class1.obj.property);
实际上,像这样的字段通常被声明为私有的,在这种情况下,可能会提供一个访问器方法来访问它。好的,一件事是你不能在类定义中运行任意一行代码(System.out.println),所以你的例子是无效的
obj
是Class1中的“实例变量”-类2需要引用Class1的对象才能访问该实例的“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
未声明为公共,实际上没有提供任何修改器,因此它具有默认的访问权限,即package,因此Class1和Class2需要位于同一个包中,以允许使用anObj.obj
私有对象
public class Class1
{
//...
Classx obj = new Classx();
//...
public Classx getClassx()
{
return obj;
}
}
public class Class1
{
public Classx obj = new Classx();
//...
}
public class Class1
{
//...
public static Classx obj = new Classx();
//...
}
及
公共对象
public class Class1
{
//...
Classx obj = new Classx();
//...
public Classx getClassx()
{
return obj;
}
}
public class Class1
{
public Classx obj = new Classx();
//...
}
public class Class1
{
//...
public static Classx obj = new Classx();
//...
}
及
静态公共对象
public class Class1
{
//...
Classx obj = new Classx();
//...
public Classx getClassx()
{
return obj;
}
}
public class Class1
{
public Classx obj = new Classx();
//...
}
public class Class1
{
//...
public static Classx obj = new Classx();
//...
}
及
请显示
Class2
定义。