为什么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呀。。。不可能为了测试就专门搞这么一个语法。。。这点值得日后研究,等我代码看得多了,说不定会有新体会。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,有两种内部类静态内部类静态内部类。它们的主要区别在于访问方式和用途。 静态内部类是一个独立的类,但它是作为宿主类的一个静态员存在的。它可以访问宿主类的静态员,但不能直接访问宿主类的静态员。另外,静态内部类的实例化不依赖于宿主类的实例化,可以直接通过宿主类访问或使用。静态内部类通常用于将一个类嵌套在另一个类中,并与其它外部类共享。 静态内部类是一个依赖于宿主类实例的类,它只能在宿主类的实例中被实例化。静态内部类可以直接访问宿主类的员,包括静态静态员。静态内部类的实例化必须依赖于宿主类的实例,并通过宿主类的实例访问或使用。静态内部类通常用于充当宿主类的辅助类,以提供更多特定于宿主类实例的功能。 总结起来,静态内部类可以看作是宿主类的静态员,独立于宿主类的实例存在,并且可以直接使用宿主类的静态员;静态内部类是宿主类的一部分,依赖于宿主类的实例存在,并且可以直接使用宿主类的所有员。 在实际应用中,选择使用静态内部类还是静态内部类取决于具体需求。如果一个类不依赖于宿主类的实例,且能够独立使用,那么可以使用静态内部类;如果一个类需要依赖于宿主类的实例,并且需要访问宿主类的员,那么就需要使用静态内部类

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值