1.概念
外部类:这是一个相对内部类的概念,如果一个类中嵌套了另外一个类,我们就把这个类叫做外部类。
内部类:顾名思义,就是定义在里边的那个类。 见以下代码:
定义了一个类Outer,在Outer内中一定了私有成员变量x ,成员方法show()和一个内部类 Inner ; Inner类和普通类一样也有一个成员变量 x 和成员方法 method
2.访问规则 1. 内部类可以直接访问外部类中的成员 2.外部类访问内部类有两种方式: 第一种方式: 在主函数中直接用创建内部类对象的方式 , 如 : Outer out = new Outer(); Outer.Inner in = out.new Inner(); 这种方式通常不会用到,不建议使用 第二种方式: 在外部类方法中创建内部类对象; 在主函数中创建外部类对象,直接调用外部类方法 。 见以下代码 :
3.访问内部类中的成员变量。 思考一个问题,上边的代码中,打印出来的 x 的值是几 ? 没错,是 6 . 再看看以下的代码
定义了一个局部变量, 问 现在打印的x 的值是多少了 ? 答案是 4 。 这说明了什么 ? 如果 x 前面什么都没有,那么内部类中方法访问的是局部变量 ; 如果没有局部变量的,就访问 类中的成员变量 x .
再来看看以下的代码 : 继续思考 打印的x值会是多少
这时候就变成 3 了 , 所如果要访问外部成员变量 要加上 Outer.this 。 注: 当然,就想Inner类中如果没有局部变量 x ,即使不加也无所谓程序打印的一样是 6 ,也就是说 如果没有局部变量x Inner类中也没有成员变量x ,这个时候即便 x 前边什么也不加访问的也是 外部的 x 值3 了 。 见代码所示 :