JAVA的访问修饰符、内部类、初始化块

来源:互联网 发布:head first python知乎 编辑:程序博客网 时间:2024/06/13 09:46

abstract和final两个几乎随处可用的就不说了。

最外部的类只能有public\default。

public和.java文件名一致。显然只能有一个。

default在同包内可访问。protected则附加包外子类也可。

在最外部的类当中,可以倒腾这些东西

内部类:public, protected, default, private。

相互之间随便访问private。实际上,好像这几个访问修饰符用在这里没什么差别,是不是java设计上的不完备?

内部类不能被其他类实例化。

初始化、静态初始化块:default。

可以访问任何内部类private,而自己不能被任何内部类访问,即内部类不知道块中类的存在。

所以块中类实际上是一种局部内部类,离开{}即不可见。

但是当然块中如果定义了多个class,相互可以随意访问private。

{}和static{}之间自然也是不可见的。

另外可以注意一下块中类javac出来的.class,是$1和$2修饰的,而且不是1和2这样跟它们对应的,而是同名冲突了才会用2。


执行顺序:

父类static{},子类static{},父类{},父类构造函数,子类{},子类构造函数

四种内部类:

常规内部类,静态内部类,局部内部类,匿名内部类。

匿名内部类不能是abstract或static

局部内部类不能是static

常规内部类内部不能再定义static类、static{}

0 0