本文由我司收集整编,推荐下载,如有疑问,请与我司联系
Java 内部类、成员类、局部类、匿名类等
2016/10/13 0 Java 各种称呼类详解Java 有各种各样类,内部类、嵌套类、成员类、局部类(本地类)、静态类、匿名类、文件类以及这些组合起来的称呼类,成
员内部类,成员匿名类,成员嵌套类,本地匿名类等,真是多的不行,但有些其实
是一个意思,在这里好好理一理。
声明 1.注意,这些称呼都是翻译过来的,但是同一个英文单词或一个词组翻译过
来可能有不同叫法,比如local nested class,local 有局部、本地意思,其实是一个意思,local nested class 翻译过来就是局部嵌套类(本地嵌套类),又因为非静态嵌套类都称为内部类,因此local nested class 又叫为内部局部类(本地内部类),最终又简称为:局部类(本地类)。
我个人觉得局部类更加形象点因此下面都优先采用局部
类一说。
2.我通过搜索找到两种不太相同的内部类定义,一种认为:定义在类里面
的称为嵌套类(nested class),而非静态嵌套类才是内部类(inner class),也就是说嵌套类包含内部类;另外一种则是认为:定义在类里面的称为内部类,这样静态嵌套类
也是内部类,也就是说嵌套类=内部类。
但是,第一种才是Java 语言规范规定的,
我一开始不确定,找到Java7 的语言规范验证,结果确实如此,即第一种才是正确
的,那么问题来了:依照第一种划分,静态内部类其实是一种错误说法。
只有静
态嵌套类,内部类是没有静态一说的!但是对于大多数中国程序员,貌将定义在
类里面的类称为内部类不是更符合文意么?也许这就是为什么会有这么多人一直认
为静态内部类的存在。
嘛,反正不管怎么称呼,只要知道代表什么意思就好,细节
什么的不要在意(光哥:因此不注意细节的你写的代码才这么一大堆bug 么?还不
赶紧去改(怒))。
我这里采用Java 语言规范上说的。
0.文件类文件类放在最前面,是因为文件类是与主类(一个文件中public 类)关
系最不密切的一类。
什么是文件类?看代码就知道:
code >class Test{} span > span > span >【注意】:主类这一定义是我自己按语义称呼的,有的地方称为基本类,但我觉得很不符合语义,Java 语言规范我也没找到相
关定义。