我希望将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);
}
}
}
答案 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