您的位置 首页 java

Java开发课程(十一)——高级特性 1、内部类

内部类

1、内部类概念

  • 所谓内部类(InnerClass),顾名思义,就是将一个类定义在另一个类的内部。内部的类称之为内部类。
public class Outer{
 class Inner{
 //省略
 }
}
 
  • 内部类的主要特点

一内部类可以很好的实现隐藏,可以使用 protected 、private修饰符。

一内部类可以直接访问外部类的所有成员,包括私有的成员。

一外部类不能直接访问内部类的成员,必须首先要建立内部类的对象才可访问。

一内部类可以解决一些问题,比如间接地去实现多继承。可以避免修改接口而实现同一个类中两种同名方法的调用。

2、成员内部类及应用

  • 成员内部类特点:

一成员内部类属于外部类的实例成员,成员内部类可以有public,private,default,protected权限修饰符。在成员内部类中访问外部类的成员方法和属性,要使用”外部类名.this.成员方法”和”外部类名·this·成员属性”的形式。

一创建成员内部类的实例使用”外部类名·内部类名实例名=外部类实例名.new内部类构造方法(参数)”的形式。

  • 成员内部类有以下限制:

一成员内部类不能与外部类重名。

一不能在成员内部类中定义 static 属性、方法和类(static final形式的常量定义除外)。因为一个成员内部类实例必然与一个外部类实例关联,static成员完全可以移到其外部类中去。

3、静态内部类及应用

  • 静态内部类特点:

一使用static修饰的成员内部类叫静态内部类。

一静态内部类更外部类没有任何关系,只是在生成类名和类定义时有影响。静态内部类可以看做是与外部类平级的类。使用方式与外部类平级的类完全相同。

一创建静态内部类的实例使用外部类名,内部类名实例名=new外部类名,内部类名(参数)。

  • 静态内部类有以下限制:

一静态内部类不能与外部类重名。

一静态内部类不能访问外部类的非静态的属性和方法。外部类不能访问内部类的非静态的属性和方法。

4、匿名内部类及应用

  • 匿名内部类特点:

一匿名内部类是没有名称的内部类,没办法引用它们。须在创建时,作为new语句的一部分来声明并创建它们的实例。

一匿名内部类必须继承一个类( 抽象 的、非抽象的都可以)或者实现一个接口。如果父类(或者父接口)是 抽象类 ,则匿名内部类必须实现其所有抽象方法。

一匿名内部类中可以定义代码块,用于实例的初始化,但是不能定义静态代码块。

  • 匿名内部类语法:
new interface/super class(){//类体}
 

一这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口,并同时创建该匿名类的一个新实例。

5、局部内部类及应用

  • 局部内部类特点:

一定义在代码块、方法体内、作用域(使用花括号”{}”括起来的一段代码)内的类叫局部内部类。

一局部内部类访问外部类的属性和方法使用”外部类名.this.属性名”和”外部类名.this.方法名(参数)”的形式。

一对外部世界完全隐藏,只能在其作用域内生成对象。

  • 局部内部类有以下限制:

一局部类不能加访问修饰符,因为它们不是类成员。

一成员内部类不能与外部类重名。

一局部内部类访问作用域内的 局部变量 ,该局部变量需要使用final修饰。

6、课程总结

  • 内部类概念
  • 成员内部类及应用
  • 静态内部类及应用
  • 匿名内部类及应用
  • 局部内部类及应用

文章来源:智云一二三科技

文章标题:Java开发课程(十一)——高级特性 1、内部类

文章地址:https://www.zhihuclub.com/173294.shtml

关于作者: 智云科技

热门文章

网站地图