内部类构造函数未显示所需的输出

时间:2017-09-10 16:31:33

标签: java

我希望将innerclass值设为8但代码显示为“0”,为什么该值未分配给内部类构造函数

public class Testit {

public static void main(String[] args) {
    test obj = new test(9, 8);
    test.test2 obj2 = obj.new test2();
    obj2.show();
    // TODO code application logic here
}
}
class test {

private int a;
private test2 d;

public test() {
    a = 0;
}

public test(int aa, int b) {
    a = aa;
    d = new test2(b);
}

public class test2 {

    private int b;

    public test2() {
        b = 0;
    }

    public test2(int bb) {
        b = bb;
    }

    public void show() {
        System.out.println("Outer variable " + a + " Inner Variable " + b);
    }
}
}

1 个答案:

答案 0 :(得分:1)

你的错误在于主要方法本身

public static void main(String[] args) {
    test obj = new test(9, 8);
    test.test2 obj2 = obj.new test2();
    obj2.show();
    // TODO code application logic here }

“Obj”是“test”类的新实例。但是“obj2”是test2的一个新实例(即使你使用具有这个新实例的obj引用)。

如果要检索构建的值,请为test.d属性添加getter,然后将“test.test2 obj2 = obj.new test2();”更改为“test.test2 obj2 = obj.getD();

你应该打印:

Outer variable 9 Inner Variable 8