第十章:内部类(上)

可以将一个类的定义放在另一个类的定义内部,这就是内部类。
内部类是一种非常有用的特性,它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性。
内部类可以访问外部类的所有成员,内部类持有外部类的引用。

10.3 .this 和 .new

如果你在内部类需要对外部类引用, 可以使用 外部类的名字.this。其在编译期就被知晓并受到检查,因此没有任何性能开销。
必须使用外部类对象来创建内部类对象(静态内部类除外)。外部类对象.new 内部类名称()

10.4 内部类与向上转型

private内部类给类的设计者提供了一种途径,通过这种方式可以完全阻止任何依赖于类型的编码,并且完全隐藏了实现的细节。【个人感觉:这小节说的是private的内部类,在外部类中提供创建内部类对象的方法,因为是private修饰的,所以其他类没有访问权限。隐藏实现细节。】

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

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

10.6 匿名内部类

没有名字的内部类。

10.7 嵌套类

嵌套类其实就是指静态内部类。
嵌套类不持有外部类的引用。
不能从嵌套类的对象中访问非静态的外部类的对象。
创建内部类对象:new 外部类名称.内部类名称();

10.7.1 接口的内部类

其实就是把内部类定义为接口的成员变量。

public interface TestInner {
    void eat();
    class Test implements Contents{
        @Override
        public int value() {
            return 0;
        }
    }
}

一个内部类被嵌套多少层并不重要,它能够透明的访问所有它所嵌入的外围类的所有成员。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

outer199

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值