class Outer {
private int i;
public class Inner {
public void doStuff() {
i++;
}
public int getI() {
return i;
}
}
}
public class TestInner {
public static void main(String[] args) {
Outer.Inner oi=new Outer().Inner();
oi.doStuff();
System.out.println(oi.getI());
}
}
请问这个程序正确吗?输出结果是什么?并做分析.谢谢
private int i;
public class Inner {
public void doStuff() {
i++;
}
public int getI() {
return i;
}
}
}
public class TestInner {
public static void main(String[] args) {
Outer.Inner oi=new Outer().Inner();
oi.doStuff();
System.out.println(oi.getI());
}
}
请问这个程序正确吗?输出结果是什么?并做分析.谢谢
内部类的实例是通过所在的类的实例且通过new产生的
Outer.Inner oi=new Outer().new Inner();
private int i;
public class Inner {
public void doStuff() {
i++;
}
public int getI() {
return i;
}
}
}
public class TestInner {
public static void main(String[] args) {
Outer.Inner oi=new Outer().new Inner();
oi.doStuff();
System.out.println(oi.getI());
}
} 这里的oi是内部类Inner的对象,调用其doStuff()方法,i++,输出,结果为1(注:如果没有为int变量赋值,jvm会自动赋值为0,所以i++后输出为1)