内部类访问外部类域和方法
在外部类中定义内部类,我们可以认为内部类是外部类的一些域和方法的集合,而内部类也可以访问外部类的域和方法。还是以上篇代码为为了,稍微修改一下。
package Thinking;public class InnerAccess{private int i;private String name;public InnerAccess(int i,String name){this.i=i;this.name=name;}public void getmsg(){System.out.println("outer");}public int geti(){return i;}public String getname(){return name;}public class Inner{private int i;private String name;public Inner(int i,String name){this.i=i;this.name=name;}public void getmsg(){InnerAccess.this.getmsg();System.out.println(InnerAccess.this.name+":"+InnerAccess.this.i);System.out.println(InnerAccess.this.getname()+":"+InnerAccess.this.geti());System.out.println("inner");System.out.println(name+":"+i);System.out.println(getname()+":"+geti());}public int geti(){return i;}public String getname(){return name;}}public static void main(String[] args){InnerAccess access=new InnerAccess(1,"hust");Inner inner=access.new Inner(2,"wang");inner.getmsg();}}//outputouterhust:1hust:1innerwang:2wang:2
内部类中的所有域和所有方法都覆盖了外部类的域和方法,在内部类中要访问外部类的域和方法时,需要不同的调用方式。如InnerAccess.this.域和InnerAccess.this.方法,这是内部类访问外部类被覆盖的域和方法的机制。