返回信息流面试题:静态内部类和普通内部类有什么区别?
我的理解:
(1)static修饰变量:是为了共享变量的值,比如所有的person对象的国籍都是中国。或者记录创建了多少个实例对象也可以用static变量来记录。
(2)static修饰方法:一些工具类的方法,或者为了访问上述的static变量
(3)static修饰代码块:一般用来初始化线程池或者数据库连接池一类的。
疑问:
static修饰内部类? 这个我就不是很懂了。只是为了外部创建内部类的时候,少实例化对象的作用吗?如果这样的话,为何不直接在同一package下新建类对象呢? 工程中静态内部类都是怎么使用的?
PS:还有普通代码块是怎么用啊? 既然有了static代码块, 普通代码块都有啥用。。
这是一条镜像帖。来源:北邮人论坛 / java / #60591同步于 2018/12/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
关于static关键字的疑问?静态内部类有什么使用场景啊?
fatiexiaohao
2018/12/11镜像同步22 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
A,B是普通内部类,C是静态内部类。
最直接的区别是,外部想要new一个B,必须先有一个A的实例a,B b = a.new B()。而C则不用,直接C c = new A.B()。同时B可以访问A(a)的成员变量,而C不行。
简单理解的话,可以认为非静态的B是属于A类型对象(object)的,而静态的C是属于A类型(class)的
至于应用场景,说实话,我没有遇到过
建议研究下对象模型,推荐《深度探索C++对象模型》
【 在 fatiexiaohao 的大作中提到: 】
: 面试题:静态内部类和普通内部类有什么区别?
: 我的理解:
: (1)static修饰变量:是为了共享变量的值,比如所有的person对象的国籍都是中国。或者记录创建了多少个实例对象也可以用static变量来记录。
: ...................
楼主很明显是在讨论java问题吧
【 在 CodingMyLife (自古表白多白表|从来姻缘没原因) 的大作中提到: 】
: 建议研究下对象模型,推荐《深度探索C++对象模型》