class Outer{ int m=0; void test1(){ System.out.println("外部类成员方法test1()"); } class Inner{ int n=1; void show1(){ System.out.println("外部类成员变量m="+m);//内部类方法可以访问外部类变量 test1();//内部方法可以调用外部方法 } void show2(){ System.out.println("内部类成员方法show2()"); } } void test2(){ Inner inner =new Inner();//外部方法调用内部的方法和变量,的先实例化 System.out.println("内部类成员变量n="+inner.n);//外部类方法访问内部变量和方法 inner.show2(); } } class EX20{ public static void main(String[] args){ Outer outer=new Outer();//实例化外部类对象outer Outer.Inner inner=new Outer().new Inner();//实例化外部类对象inner inner.show1(); outer.test2(); } }
结果
内部类可以访问外部类所有成员和方法
外部类访问内部类成员变量和方法,得先实例化内部类对
局部内部类,内部类放在外部类的成员方法里面
class Outer{
int m=0;
void test1(){
System.out.println("外部类成员方法()");
}
void test2(){
class Inner{
int n=1;
void show(){
System.out.println("外部类成员变量m="+m);
test1();
}
}
Inner inner =new Inner();
System.out.println("局部类成员变量n="+inner.n);
inner.show();//这句话没执行出来,局部类在test2()方法里,和局本变量一样有范围的
}
}
class EX20{
public static void main(String[] args){
Outer outer=new Outer();
outer.test2();
}
}
结果