Java内部类

Java语言允许在类中定义内部类,内部类就是在其它类内部定义的子类。内部类的功能主要有:

  1. 弥补一下单继承
  2. 可以实现量身定制,减少成本
  3. 联系外部环境与内部环境,内部类可访问外部类私有成员,类似JS中的闭包
  4. 对其他类不可见,保密性良好
  5. 具有闭包作用及在内部类中可以访问外部类所有成员甚至private修饰的,可以借助这个来获取外部类的private成员

Java中的内部类主要分为四种:成员内部类,局部内部类,静态内部类,匿名内部类。

成员内部类

成员内部类和成员变量一样,属于类的全局成员。

实例的内部类中存在对外部类的引用,即存在外部类的地址。这种内部类可以用四种类修饰符以及static和final,(外部类不可以用abstract与static或final连用)
应用格式:外部类.内部类 内部类的变量名=new 外部类.().new 内部类();
内部类通过外部类的实例来调用内部类的构造器实例化。
使用的时候需要绑定。

局部内部类

通常用来返回接口。
不可以用public、private,不包含static(不包含静态变量)。
定义了接口,接口没有构造器,无法返回对应对象,所以不能返回接口对象,但是可以返回实现了接口的对象,通过获取返回的局部内部类的对象来调用重写方法,局部内部类访问局部变量必须加final。(这是因为内部存储的是常量,局部变量调用完毕消失,局部对象没有立即消失)

静态内部类

静态内部类用关键字static修饰。它与外部类没有什么区别,只是形式不同,可以定义static和非static这两种成员
实例化方法,不用刻意去实例化,直接类名.方法,直接当对象用可以访问静态成员,但是只能调用类方法。
静态内部类不可以访问外部非静态成员,但是可以创建一个外部类来访问,没有外部类引用。

匿名内部类

匿名内部类就是没有名称的内部类,它经常被用在Swing程序设计中的事件监听处理。
用ClassName的子类创造对象,并且子类类体和对象的创建被组合在一起,具有针对性。
前提,必须实现一个父类实现一个接口,它可以是一个类,也可以是一个接口
匿名类一定是内部类,
功能:

  1. 简化了代码编写
  2. 实现了量身定制
    用法:
  3. 省略了一个类的书写,并且匿名内部类能用在接口上,
  4. 一个抽象类和一个接口,那么子类中的方法都可以用静态匿名内部类实现,最常用于多线程实现,因为多线程实现必须继承Thread类和继承Runnable接口
    他没有访问修饰符,因为他没有直接开辟一个内部类,然后实现接口,重写方法返回实例,他直接new了一个接口的出现。
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页