拜读了《深入理解内部类和嵌套类》及《初识java内部类》两篇文章后,对内部类基本认识了:
一 含义
在一个类或方法内部定义的类就是内部类。匿名内部类是内部类的一种特殊用法
二 功用
内部类对其他类都是不可见的,这利于信息隐藏。内部类可以访问他的上一级的变量和方法,包括私有类型,这是非内部类不可行的。
内部类实现接口可以方便实现多继承
匿名内部类常用于事件处理
三 所谓嵌套类和内部类
《java语言导学》一书定义:静态的嵌套类就叫嵌套类,而非静态的静态类称为内部类
这样容易使人误解所谓嵌套类和内部类有不同的性质。他们的区别就在于static:(暂且用嵌套类和内部类这两个名词以示区别)内部类对象可以访问他说对应的外部类对象,有隐式的指向外部的引用。而嵌套类没有。因为静态成员不能直接引用非静态成员。
所以不用说的这么复杂,我倾向于就称“内部类”,使用中要注意到static修饰词的作用。
四 匿名内部类
语法规则:
new interfacename(){..................}
new superclassname(){..................}
它没有构造函数
如果想初识化它的成员变量
1.如果是在一个方法内部,可通过方法传递参数。这些参数必须声明为final,因为方法内的成员变量修饰符只有final
2.将匿名内部类改造成有名字的局部内部类
3.在匿名类内部使用初始化代码块