[Java 编程思想]第十章

内部类

定义:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。

特性

  • 内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。
  • 在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。
  • 创建内部类对象的时刻并不依赖于外围类对象的创建。
  • 内部类提供了更好的封装,除了该外围类,其他类都不能访问。

例如

      public class OuterClass {
            private String name;
            private int age;
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }            public int getAge() {
                return age;
            }
            public void setAge(int age) {
                this.age = age;
            }
            public class InnerClass {
                public InnerClass() {
                    name = "chenssy";
                    age = 23;
                }
                public void display() {
                    System.out.println("name:" + getName() + "   ;age:" + getAge());
                }
            }
            public static void main(String[] args) {
                OuterClass outerClass = new OuterClass();
                OuterClass.InnerClass innerClass = outerClass.new InnerClass();
                innerClass.display();
            }
        }

编译:内部类是个编译时的概念,一旦编译成功后,它就与外围类属于两个完全不同的类(当然他们之间还是有联系的)。对于一个名为OuterClass的外围类和一个名为InnerClass的内部类,在编译成功后,会出现这样两个class文件:OuterClass.class和OuterClass$InnerClass.class

类别内部类主要分为成员内部类、局部内部类、匿名内部类、静态内部类

注意

  • 第一:成员内部类中不能存在任何static的变量和方法;
  • 第二:成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类。

静态内部类:
使用static修饰的内部类称之为静态内部类。
1、 它的创建是不需要依赖于外围类的。
2、 它不能使用任何外围类的非static成员变量和方法。

你可能感兴趣的:([Java 编程思想]第十章)