黑马程序员技术交流社区

标题: 关于static修饰的class [打印本页]

作者: 陶吉才    时间: 2013-6-13 13:58
标题: 关于static修饰的class

通常一个普通类不允许被static,只有内部类才可以。这时被static的内部类可以直接作为一个普通类来使用,而不需创建外部类的实例。
public class StaticCls
{
    public static void main(String[] args)
        {
              OuterCls.InnerCls oi = new OuterCls.InnerCls();
        }
}

class OuterCls
{
     public static class InnerCls
        {
              InnerCls()
                 {
                       System.out.println("InnerCls");
                 }
         }
}
结果为:InnerCls
在上面的例子中,没有创建外部类的实例,直接创建了内部类innercls的对象。
作者: 张禄宇    时间: 2013-6-13 15:06
这跟JAVA初始化有关。初始化过程开始时,初始化一次(只有一次),静态域或者变量,存储在栈中。
OuterCls.InnerCls oi = new OuterCls.InnerCls();
实际上,你已经访问了  OuterCls

作者: 十字路口    时间: 2013-6-14 00:48
亲,我没眼花的话。。看到的是你在main中只写了一条初始化内部类的语句吧。当然只有内部类初始化了,而且静态内部类是依赖于它所属的外部类的类的,不是它所属的外部类的对象,所以,只要有外部类,就可以实例化内部类。也就是可以不创建外部类的实例对象就可以初始化其内部类哈。




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