创建一个在数组中有另一个类的多个实例的类?

时间:2018-03-08 03:41:40

标签: java arrays class

我想创建一个类A,其中一个实例变量是一个由类B的对象组成的数组。是否可以通过类A访问类B的方法,因此可以执行以下操作:

classA.classB[0].getSth()

或者有没有其他方法可以通过A类访问B类中的方法?

2 个答案:

答案 0 :(得分:0)

只要类A公开B[]实例(使用适当的访问修饰符或通过getter),任何OOP语言(此处为Java)都允许以您提到的方式提供访问权限

请看下面的示例:

public class ObjectAcces {
    public static void main(String[] args) {
        B[] bs = {new B(1), new B(2), new B(3), new B(4)};
        A a = new A(bs);

        System.out.println("** Printing All Values **");
        a.printAll();

        System.out.println("** Printing Specific Value **");
        a.bs[0].print();
    }
}

class A {
    B[] bs;

    public A(B[] bs) {
        super();
        this.bs = bs;
    }

    void printAll() {
        Arrays.stream(bs).forEach(b -> b.print());
    }
}

class B {
    private int val;

    public B(int val) {
        super();
        this.val = val;
    }

    void print() {
        System.out.println("Val: " + val);
    }
}

答案 1 :(得分:0)

是的。要记住的最重要的是访问修饰符。为了能够致电a.b[0],您必须将b打包为私人或公开。

public class A {
  B[] b;
}

public class B {
  public void sayHi() {
    System.out.println();
  }
}

public class Main {
  public static void main(String...args) {
    A a = new A()
    B b1 = new B(), b2 = new B(), b3 = new B();
    a.b = {b1,b2,b3};
    a.b[0].sayHello();
  }
}