为什么Java内部类要设计成静态和非静态两种

简单理解就是:如果把类比喻成鸡蛋,内部类为蛋黄,外部类是蛋壳。那么静态类相当于熟鸡蛋,就算蛋壳破碎(外部类没有实例化),蛋黄依然完好(内部类可以实例化);而非静态类相当于生鸡蛋,蛋壳破碎(无实例化),蛋黄也会跟着xx(不能实例化)。

 

 

 

 

 

静态内部类就是个独立的类。
之所以要弄这么个东西,只是起到一个注释的效果,而且这个注释可静态检查。
比如有A,B两个类,B有点特殊,虽然可以独立存在,但只被A使用。
这时候怎么办?如果把B并入A里,复杂度提高,搞得A违反单一职责。如果B独立,又可能被其他类(比如同一个包下的C)依赖,不符合设计的本意。所以不如将其变成A.B,等于添加个注释,告诉其他类别使用B了,它只跟A玩。
非静态的才是真正的内部类,对其外部类有个引用。

 

用途

  静态内部类是没有指向外部类的引用的,所以说它和外部类并没有什么关系,因此,即使没有外部类的对象,也可以直接创建静态内部类的对象。但是我觉得如果是这样使用的话,那完全没必要把类弄成静态内部的,直接创建外部类一般的类就OK了。所以说静态内部类肯定有它自己独特的作用。既然是个内部类,我觉得应该会声明成private,不然还不如创建一个外部类呢。。。。那private static的class有啥用处呢?我也不清楚。。。现在我唯一觉得有用的地方就是可以把测试代码main方法写在里面。因为是private的类,外接不能调用它,也就不能调用写的main函数了。。但是如果只是测试的话可以使用junit test呀。。。不可能为了测试就专门搞这么一个语法。。。这点值得日后研究,等我代码看得多了,说不定会有新体会。

 

 

你可能感兴趣的:(JAVA,内部类)