本帖最后由 wenbaoxing 于 2013-10-22 08:53 编辑
内部类 —在类中直接定义的内部类
- 在一个类内部定义类这就是嵌套类,也叫内部类、内置类。
- 嵌套类可以直接访问嵌套它的类的成员,包括private成员,但是嵌套类的成员却不能被嵌套它的类直接访问。
- 在内部类对象保存了一个对外部类对象的引用,当内部类的成员方法中访问某一变量时,如果在该方法和内部类中都没有定义过这个变量,内部类中对this的引用会被传递给那个外部类对象的引用。
- package com.itheima;
- class Outer {
- int outer_i = 100;
- void test() {
- Inner in = new Inner();
- in.display();
- }
- class Inner {
- void display() {
- System.out.println("display: outer_i = " + outer_i);
- }
- }
- }
- class InnerClassDemo {
- public static void main(String[] args) {
- Outer outer = new Outer();
- outer.test();
- }
- }
- //打印结果:display: outer_i = 100
复制代码 在程序中,内部类Inner定义在Outer类的范围之内。因此,在Inner类之内的display()方法可以直接访问Outer类的变量outer_i。其实,在内部类对象保存了一个对外部类对象的引用,当内部类的成员方法中访问某一变量时,如果在该方法和内部类中都没有定义过这个变量,内部类中对this的引用会被传递给那个外部类对象的引用,通过那个外部类对象的引用去调用这个变量,在内部类中调用外部类的方法也是一样的道理。上面程序代码在内存布局如图:
|