Java Inner Class 和 Static Inner Class

1、Java没有static class 概念,static 在修饰 class 的时候,只能修饰 inner class,即所谓的 static inner class(静态内部类)。

2、inner class:为什么需要内部类?主要有3个好处:
  • 为了更好的组织类层次。如果一个类只在某处使用,那么内部类是很好的选择。比如常用的 java.util.HashMap 内部使用了 Entry<K,V>,这个Entry class 仅仅是为了 HashMap 使用,所以采用内部类的方式。这种例子还有各种helper class。  
  • 更好的封装。非静态内部类可以访问外部类的私有成员,使用内部类可以在实现功能的同时,对外隐藏内部类本身,实现更好的封装。
  • 使用较小的内部类,代码的可读性和可维护性更好。
 
3、非静态内部类可以访问外部类的私有成员,是因为非静态内部类含有外部包装类的一个instance。因为非静态内部类含有外部类的instance,所以不能定义static field 和 static method。(static field 和 static method 的scope是Class,而不是 instance,因此包含外部类的 instance 的内部类不能定义 static member)。

4、static inner class 和  外部类(即 top level class)基本是一致的,不包含 outer class 的 instance reference。所以可以看做一个 top level class。只是为了更好的组织类结构才将这个类所谓内部类。当然instance static inner class 的语法和 top level class 稍有不同。static inner class 可以定义static field和 static method。所以可以再 static inner class 中写main函数,以测试 outer class 的功能。

关于 inner class 和 static inner class 比较权威的文档和说明:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值