Java编程思想笔记(十)—— 内部类

感悟

个人认为从内部类开始进入本书的高级部分,前面基础如果没打好,看本章节会很吃力。内部类是一种非常有用的特性,它可以结合接口、多态体现它的强大。

笔记
  • 10.1 创建内部类
引出创建内部类与如何引用,如果想从外部类的非静态方法之外的任意位置创建某个内部类对象,则需要具体指明这个对象的类型:OuterClassName.InnerClassName
  • 10.2 链接到外部类
内部类可以访问外围对象的所有成员,包括private,同时内部类(非静态)只能与有外围类相关联的情况下才能被创建,大多数情况编译器会自动判断,无需程序员操心。
  • 10.3 使用.this与.new
注意理解两种用法,DotThis.this 即为内部类引用外部类;有外部类对象时,创建内部类 DotNew.Inner dni = dn.new Inner() ;
  • 10.4 内部类与向上转型
引出了内部类的重要特性:隐藏接口实现,完全不可见,得到的只是一个指向接口或基类的引用。
  • 10.5 在方法和作用域内的内部类
从这节开始进入重点,一步步引出内部类重要特性。本节了解局部内部类以及它的作用域。
  • 10.6 匿名内部类
    1)再访工厂方法
1、引出匿名内部类,理解“创建一个继承(实现)自Contents的匿名类的对象,通过new表达式安徽的引用被自动向上转型对对Contents的引用“。
2、引出如果匿名内部用用了外部定义对象,则参数引用需要final。
3、引出匿名内部类构造器,有参数构造器,实例初始化模拟构造器效果。
4、结合工厂方法,使用内部类显得更加简洁。
  • 10.7 嵌套类
    1)接口内部的类
    2)从多层嵌套类中访问外部类的成员
1、引出嵌套类即static内部类,创建嵌套类无需外围类对象。内部类不能有static数据,而嵌套类都可以有。
2、接口中因为默认是public和static所以自动为嵌套类。
3、用嵌套类来编写main测试代码,发布的时候可以剔除独立的TestBed$Tester类,是个不错的选择。
4、嵌套类可以透明的访问外网类成员,无论有嵌套多少层。
  • 10.8 为什么需要内部类
    1)闭包与回调
    2)内部类与控制框架
1、引出内部类是作为多重继承的重要补充(接口可以实现多个,但是无法继承多个)
2、引出闭包和回调,这节有一定难度。首先理解Java中的闭包是内部类即可以访问外围类成员,其次要理解回调即内部类可以调用外部类方法。在此基础上理解“钩子“即接口引用,最后结合例子Callee2在继承后,通过内部类实现了接口,然后Caller通过内部类回调了外部类Callee2方法increment。
3、引出设计模式模板方法(包含算法的基本结构,并且调用一个或多个可覆盖的方法,以完成管阀的动作),并结合内部类进行示例。进而引出内部类在控制框架的作用,封装细节,代码简洁。
  • 10.9 内部类的继承
了解就好,一般不这样操作
  • 10.10 内部类可以被覆盖吗
1、继承外部类后,重新定义外部类的内部类,这样内部类是无法覆盖。这两个是独立的两个实体,各自在自己的命名空间内。
2、例外是明确的继承某个内部类然后进行覆盖。
  • 10.11 局部内部类
1、对比了局部内部类和匿名内部类,具有相同的行为和能力。
2、局部内部类可以有自己重载构造器。
3、需要不止一个该内部类对象时候,使用局部内部类。
  • 10.12 内部类标识符
本节虽然很短,但是很重要,理解内部类的.class编译生成。
  • 10.13 总结
理解接口、内部类、多重继承,以及何时使用内部类和接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值