天天看点

Java编程思想-6Java编程思想

Java编程思想

内部类

将一个类定义在另外一个类的内部,这就是内部类。静态内部类,被static关键字修饰的内部类。

1、创建内部类和链接到外部类

内部类最基本的创建方式,就是在类的内部创建一个类。其宿主类需要创建该内部类的实例对象,才可以使用。而内部类可以任意使用其宿主类的方法和属性。内部类可以使用”宿主类.this”的方式使用宿主类对象。当在宿主类之外使用它的内部类时,需要使用宿主类的实例对象再加.new的方式来构建其内部类对象。如:

Pubic class OutClass{
 Class InnerClass{}
}
OutClass. InnerClass innerClass = new OutClass().new InnerClass() ;
           

内部类编译后生成的class文件,OutClass InnerClass.class。如果是匿名内部类,则编译后的内部类的class文件为一个数字:OutClass 数字.class.

2、内部类的创建位置

  • 1,创建在类中,类似以类的属性和方法。
  • 2,创建在方法中。
  • 3,创建在一个作用域中。
  • 4,匿名内部类

3、匿名内部类

没有确定名称的内部类。这些类的原型应该是继承别的类或者实现一个接口而产生的新类。匿名内部类使用外部类的对象引用要将外部类的对象引用定义为final类型。匿名类中不允许修改其所使用的外部类的引用以及变量。(原因暂时不详)

4、嵌套类(静态内部类)

静态内部类和普通内部类的差别:1)外部创建其对象时,无需使用外部类的对象来实例化。2)不能随意访问外部类的非静态成员变量和方法。

接口中的内部类默认也是静态内部类。可以在接口的内部类中实现该接口。

5、内部类存在的意义

意义1:完美的解决了类的多继承问题,因为内部类可以继承外部类所要继承的类。并且在外围类中可以创建很多个内部类的对象。

意义2:提供访问外围类的窗口。

6、闭包和回调

闭包:一个可调用的对象,它记录了一些信息,这些信息来源于创建它的作用域。简而言之就是,一个对象,包含了创建者的信息。

回调:一些匿名内部类可以很好的实现回调,尤其在事件处理过程中。

7、内部类的继承

内部类的继承一定要有外围类的对象。在继承过程中内部类不能被覆盖,因为他们所属于的内部命名空间不同。