内部类--随笔

    首先说明下内部类可不是组合。

    内部类最直白的一个作用就是名字隐藏和组织代码的模式。

     虽然隐藏和组织是很有用的,但还是不能让人对它注意。它还有其它用途。当生成一个内部类的对象时,此对象与制造它的外围对象之间就有一种联系,它可以访问其外围对象的所有成员,而不需要任何特殊条件。此外,内部类还拥有其外围类的所有元素的访问权。

    内部类可以返回一个对象的引用。

    比如a类有个c类,c类返回此类的引用。我们可以这样用。

                     A a = new A();

                     C c = a.c;

    内部类自动拥有对其外围所有成员的访问权限。这是如何做到的呢?

    当某个外围类的对创建了一个内部类对象时,此内部类对象必定秘密地捕获一个指向那个外围类对象的引用。然后在你访问此外围类的成员时,就是用那个引用来选择外围类的成员。幸运的是,编译器会帮你处理所有细节,但你现在可以看到:内部类的对象只能在与其外围类的对象相关联的情况下才能被创建(内部类是非static时)。构建内部类时需要一个指向其外围类对象的引用,如果编译器访问不到这个引用就会报错。不过绝大多数时候这都无需程序员操作。

   内部类的典型用途便是就是上面所说的隐藏和组织代码。通常,如果读、写的代码包含内部类,那么它们都是”平凡的“内部类,简单并且容易理解。然而内部类的语法覆盖了大量其他的更加难以理解的技术。例如可以在一个方法或者任意作用域中定义内部类。这么做有俩理由:

1、你实现了某个类型的接口,于是创建并返回对其的引用。

2、你要解决一个复杂的问题,想要创建一个类来辅助你的解决方案,但是又不希望这个类是公共可用的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

子鞋

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

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

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

打赏作者

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

抵扣说明:

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

余额充值