<十>内部类

1.      将一个类的定义放在另一个类的定义内部,这就是内部类。内部类是一种非常有用的特性,它允许把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性。

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

3.      内部类拥有其外部类的所有元素的访问权限。当某个外部类的对象创建了一个内部类对象时,此内部类对象必定会秘密地捕获一个指向外部类对象的引用,这个引用就可以用来选择外部类的成员了。同时,内部类的对象只能在与外部类的对象相关联的情况下才能被创建(内部类是非static类时)。

4.      如果需要生成对外部类对象的引用,可以使用OuterClassName.this 方式,这样产生的引用自动具有正确的类型。外部类的对象去创建某个内部类的对象,可以使用外部对象名.new 语法。

5.      内部类继承或实现一个类或接口后,可以向上转型为基类,能够方便隐藏实现细节。

6.      内部类可以定义在外部类的一个方法或者域中,它们的作用范围也限于此范围。

7.      匿名内部类:匿名内部类没有名字,通过创建匿名内部类的引用会自动向上转型为基类的类型。

8.      匿名内部类要使用外部内定义的对象或域,那么与之接口的方法的参数必须是final的。

9.      匿名内部类没有构造器,通过实例初始化方式来实现初始化操作,其效果等同于构造器。

10.  嵌套类:如果一个内部类声明为static,那么这个内部类与外部类将不必有必要联系,这中类称为嵌套类。创建嵌套类的对象,不必需要外部对象,同时不能从嵌套类的对象中访问非静态的外部类对象。

11.  普通内部类的字段与方法,只能放在类的外部层次上,所以普通的内部类不能有static数据与static字段,也不能包含嵌套类。但嵌套类可以包含这些。

12.  接口中的内部类:在接口中创建的任何内部类都是自动为public和static的,所以接口中的内部类都是嵌套类。这种方式适用于创建某些公共代码,使得它们可以被某个接口的所有不同实现所共用。

13.  为什么需要内部类:一般来说,内部类继承自某个类或实现某个接口,内部类的代码操作创建它的外部类的对象。所以可以认为内部类提供了某种进入外部类的接口。每个内部类都能独立地继承自一个实现,所以无论外部类是否已经继承了某个实现,对于内部类没有影响。

14.  一个类如果要继承某个类中的内部类,那么必须在继承时指明内部类与外部类的关系,extends OuterClassName.InnerClassName,同时构造器中须使用 .super()

15.  局部内部类不能有访问说明符,因为它不是外部类的一部分,但是它可以访问当前代码块内的常量以及外部类的所有成员。

16.  还有内部类的class文件命名:外部类名加上“$”内部类名。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值