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

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{}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值