java 内部类总结_Java 中内部类特性总结(吐血之作)

PS:今天花了整个下午时间看内部类相关的内容,因知识点多而杂,故记之如下。

一、内部类的作用

内部类看起来是一种代码隐藏机制:将类置于其他类的内部。它还了解外部类,并能与之通信;使用内部类可以实现闭包;内部类与接口使得多继承更完整,并且内部类是一个独立的实体(没有 is-a,仅仅是方法的封装)。

二、基本特性

1)普通内部类为类的实例相关,可以看成是一个实例变量。内部类的类名由 “外部类.内部类” 确定。

内部类可以直接访问外部类的所有成员(包括 private成员),隐式或显式(外部类.this)。而外部类可以 new 内部类,实例相关的可以直接 new,static 相关(类相关)需要使用实例的引用去 引用.new。

内部类 class 前可以添加 private 与 protected 表示只对其外部类或其子类有访问权限。

2)方法和作用域中的内部类称为局部内部类,只在其词法作用域中可被访问。可以重载构造器。

3)匿名内部类引用外部类的变量必须是 final的原因:匿名内部类没有完整的类结构,无法通过指向外部类的引用来访问外部类成员,而是使用值 copy来访问拷贝的外面成员的值。因此必须需要该值被 final 修饰。

匿名内部类没有具名构造器,new Wrapper(x) {} 可以将值传递给基类的构造器。

4)如果不需要内部类对象与其外部类对象之间有联系,那么可以将内部类声明为 static,称之为静态内部类或嵌套类。特点是:创建嵌套类的实例不需要其外围类的实例;不能从嵌套类的实例中访问非静态的外围类的实例。

接口内部的类自动是 public static 的,可以将嵌套类放入接口中,从而使得他们可以被该接口的不同实现所共用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值