黑马程序员技术交流社区

标题: 为什么static不能修饰类啊? [打印本页]

作者: 王骥    时间: 2015-6-16 23:21
标题: 为什么static不能修饰类啊?
随着类加载而加载不就是静态么,为什么不能修饰类?
作者: 13922919272    时间: 2015-6-16 23:31
你的问题好刻薄
作者: shuaiqi_P_D    时间: 2015-6-16 23:50
static 可以修饰类的哦
作者: lixiaoming    时间: 2015-6-16 23:53
被静态修饰的类不方便继承哈
作者: 安安安    时间: 2015-6-16 23:55
可以内部类。
作者: danlyalex    时间: 2015-6-16 23:57
骥哥问题问的好深入!!!我竟无言以对
作者: qian0217wei    时间: 2015-6-17 00:08
就是!可以修饰内部类
作者: sanmy_lin    时间: 2015-6-17 00:09
看看,谁说不可以?
作者: 黑色柳丁    时间: 2015-6-17 11:07
我之前回答过一次。直接粘过来了
讲一下个人理解吧。static修饰的东西被我们成为类成员,它会随着类的加载而加载,比如静态代码块,静态成员,静态方法(这里只是加载,并没有调用)等等,可以假象一下,如果把一个Class文件中的外部类设为static,那目的何在呢?难道让这个类随着应用的启动而加载吗?如果我在这次使用过程中根本没有使用过这个类,那么是不是就会浪费内存。这样来说设计不合理,总而言之,设计不合理的地方,Java是不会让它存在的。
而为什么内部类可以使用static修饰呢,因为内部类算是类的成员了,如果我们没有使用静态来修饰,那么我们在创建内部类的时候就需要先有一个外部类的对象,如果我们一直在使用内部类,那么内存中就会一直存在外部类的引用,而我们有时候只需要使用内部类,不需要外部类,那么还是会浪费内存,甚至会造成内存溢出。使用static修饰内部类之后,内部类在创建对象时就不需要有外部类对象的引用了。
最终结论就是:static可以用来修饰内部类,但是不可以用来修饰外部类


作者: meng12    时间: 2015-6-17 13:57
当内部类定义在成员位置时,可以被静态修饰




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2