Java 学习和实践笔记(42):内部类(inner class)-LMLPHP

内部类的两个要点:
1)内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直
接访问。
2)内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。但外部类
不能访问内部类的内部属性。|

注意:
内部类只是一个编译时概念,一旦我们编译成功,就会成为完全不同的两个类。对于一个名为Outer的外部类和其内部定义的名为Inner的内部类。编译完成后会出现Outer.class和Outer$Inner.class两个类的字节码文件。所以内部类是相对独立的一种存在,其成员变量/方法名可以和外部类的相同。
 

Java 学习和实践笔记(42):内部类(inner class)-LMLPHP

示例代码:

package innerClass;

public class Outer {
    private int age =10;
    public void show(){
        System.out.println("Outer.show");
        System.out.println(age);
    }
    public class Inner{ //这个就是Outer这个类的内部类,而Outer就叫Inner的外部类
        int age =20;//内部类自己的属性
        public void show(){//内部类自己的方法
            System.out.println("Inner.show");
            System.out.println(age);//内部使用自己的属性
            System.out.println(Outer.this.age);//内部类访问外部类的的属性
            Outer.this.show();//内部类访问外部类的的方法
        }

    }
}
package innerClass;

public class TestInner {
    public static void main(String[] args) {
        Outer o = new Outer();//创建外部类的对象,跟以前是一样的。
        Outer.Inner i = new Outer().new Inner();//创建内部类的对象
        i.show();

    }
}
03-21 07:26