public class NestedClass2{ public class InsideClass { public void printFather() { System.out.println(name); } public String name = NestedClass2.this.name; } public NestedClass2(String aname) { name = aname; } private String name; public static void main(String[] args) { NestedClass2 n = new NestedClass2("outside class"); NestedClass2.InsideClass i = n.new InsideClass(); i.printFather(); } }这样可以这个问题怎么能称得上是变态 变量都有用于的
不到万不得已最好不要用inner class
public class NestedClass2{ public NestedClass2(String aname){ name=aname; } public class InsideClass { public void printFather (){ System.out.println(name); System.out.println( NestedClass2.this.name ); } public String name="inside class"; } private String name; public static void main(String[] args){ NestedClass2 n=new NestedClass2("outside class"); NestedClass2.InsideClass i = n.new InsideClass(); i.printFather(); } }
public class TestInnerClass { public TestInnerClass(String aname) { name = aname; } public class InsideClass { public void printFather() { // System.out.println(name); System.out.println(TestInnerClass.this.name); } public String name = "inside class"; } private String name; public static void main(String[] args) { TestInnerClass n = new TestInnerClass("outside class"); TestInnerClass.InsideClass i = n.new InsideClass(); i.printFather(); } } 这有什么奇怪的?
同意冷血inner class 访问 outter class :OutterClass.this.varName
inner class的目的就是一些方法不属于这个类,但是作为一个单独的类又不好访问“父类”的私有方法,因此放在“父类”里面。
当然它的变量名字就会有限制
public class InsideClass {
public void printFather() {
System.out.println(name);
}
public String name = NestedClass2.this.name;
} public NestedClass2(String aname) {
name = aname;
} private String name;
public static void main(String[] args) {
NestedClass2 n = new NestedClass2("outside class");
NestedClass2.InsideClass i = n.new InsideClass();
i.printFather(); }
}这样可以这个问题怎么能称得上是变态 变量都有用于的
public NestedClass2(String aname){
name=aname;
}
public class InsideClass {
public void printFather (){
System.out.println(name);
System.out.println( NestedClass2.this.name );
}
public String name="inside class";
}
private String name;
public static void main(String[] args){
NestedClass2 n=new NestedClass2("outside class");
NestedClass2.InsideClass i = n.new InsideClass();
i.printFather();
}
}
public TestInnerClass(String aname) {
name = aname;
} public class InsideClass {
public void printFather() {
// System.out.println(name);
System.out.println(TestInnerClass.this.name);
} public String name = "inside class";
} private String name;
public static void main(String[] args) {
TestInnerClass n = new TestInnerClass("outside class");
TestInnerClass.InsideClass i = n.new InsideClass();
i.printFather(); }
}
这有什么奇怪的?