第十章 内部类

创建内部类:

从外部类的非静态方法之外的任意位置创建某个内部类的对象,具体指明对象的类型:

OuterClassName.InnerClassName

链接到外部类:

内部类能访问其外围对象的所有成员

使用.this.new

生成对外部类对象的引用,外部类.this

某些对象创建某个内部类的对象,使用外部类的对象创建内部类的对象

内部类与向上转型:

private内部类给类的设计者提供一种途径,通过这种途径可以完全阻止任何依赖与类型的编码,并完全隐藏了实现的细节

在方法和作用域内的内部类:

理由:

  1. 实现了某类型的接口,于是可以创建并返回对其的引用
  2. 你想要解决一个复杂的问题,想创建一个类来辅助你的解决方案,都是有不希望这个类是公共可用的

匿名内部类:

使用其基类方法 super.method()

定义字段时,可以对其执行初始化操作

匿名类通过实例初始化实现构造(匿名类不可能有构造器)

匿名内部类,希望他使用一个在其外部定义的对象,那么编译器会要求其参数引用是final

普通的内部类:

普通的内部类对象隐式的保存了一个引用,指向创建它的外围对象

普通的内部类不能有static数据和static字段,也不能包含嵌套类

嵌套类:

  1. 要创建嵌套类的对象,并不需要其外围的对象
  2. 不能从嵌套类的对象中访问非静态的外围对象

闭包与回调:

闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建他的作用域。

内部类是面向对象的闭包

重要 回调没有理清概念

内部类与控制框架:

控制框架是一类特殊的应用程序框架,主要用来响应事件的系统称作事件驱动系统

“使变化的事物与不变的事物相互分离”

内部类允许:

  1. 控制框架的完整实现是由单个的类创建的,从而使得实现的细节被封装了起来。内部类用来表示解决问题所必需的各种不同的action()
  2. 内部类能够很容易地访问外围类的任意成员,所以可以避免这种实现变得笨拙。

内部类的继承:

继承内部类时,构造器内使用以下语法

enclosingClassReference.super();

super实际上调用了基类(内部类)方法的构造器

内部类不能被覆盖,两个内部类是完全独立的两个实体,各自在自己的命名空间内

局部内部类:

局部内部类不能有访问说明符,可以访问当前代码块类的常量以及此外围类的所有成员

使用局部内部类而不是匿名类情况:

需要一个已命名的构造器,或者需要重载构造器,而匿名内部类只能用于实例初始化。

需要不止一个该内部类的对象

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值