繁体   English   中英

试图从另一个类中访问数据。

[英]Trying to access data from one class in another.

我是 Java 新手,但对旧的过程语言和结构化编程很熟悉,我有一个关于如何在 Java 中完成某些事情的问题

我有三个类,假设它们被称为 CLASSA、CLASSB 和 TESTCLASSA。 CLASSA 有一个带有实例变量的类定义和一个用于某些数据的构造函数。 TESTCLASSA 创建 CLASSA 的实例,并通过为 CLASSA 创建对象的实例将数据传递给 CLASSA。 类似地,CLASSB 有另一个带有实例变量的类定义,以及一些数据的构造函数。 TESTCLASSA 创建 CLASSB 的实例,并通过为 CLASSB 创建对象的实例将数据传递给 CLASSB。 我正在尝试从 CLASSA 访问 CLASSB 的数据。 有人可以建议我如何去做这件事。 非常感谢您提供的任何帮助/建议。

韦恩·汉恩

要么将变量声明为 public:

public class classA {
  public Integer data;
}

或创建一个公共 getter(首选),例如:

 public class classA{
    private Integer data;

    public Integer getData() {
      return data;
    }
  }

如果您想从 A 类访问 B 类的属性,那么您可以在要从中获取数据的方法中创建 B 的对象,例如

private String nameofA;

public String getNameofA() {
    return nameofA;
}

public void setNameofA(String nameofA) {
    this.nameofA = nameofA;
}
public String getClassBData(){
    B b = new B();
    return b.getNameofB();
}

否则,您将创建 B 类型的类级别实例或依赖项。

public class TestClassA{

    public static void main(String[] args) {
        B b = new B();
        b.setNameofB("class B Name");
        A a = new A("class A Name",b);
    }
}
class A{
    private String nameofA;
    private B b = new B(); //either this 
    public String getNameofA() {
        return nameofA;
    }

    public A(String nameofA, B b) {//or constructor
        super();
        this.nameofA = nameofA;
        this.b = b;
    }


    public void setNameofA(String nameofA) {
        this.nameofA = nameofA;
    }
    public String getClassBData(){
        B b = new B();  // or creating local instance 
                        //but here a new instance will be created
        return b.getNameofB();
    }
}

那么只有您才能访问 B 实例的数据。无论如何,如果您在 B 中的方法不是私有的或受保护的(假设 A 不扩展 B),您可以通过创建或传递 B 的实例来访问该方法到您要访问的“A”方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM