A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陶吉才 中级黑马   /  2013-6-13 13:58  /  1209 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


通常一个普通类不允许被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的对象。

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
这跟JAVA初始化有关。初始化过程开始时,初始化一次(只有一次),静态域或者变量,存储在栈中。
OuterCls.InnerCls oi = new OuterCls.InnerCls();
实际上,你已经访问了  OuterCls
回复 使用道具 举报
十字路口 来自手机 中级黑马 2013-6-14 00:48:18
藤椅
亲,我没眼花的话。。看到的是你在main中只写了一条初始化内部类的语句吧。当然只有内部类初始化了,而且静态内部类是依赖于它所属的外部类的类的,不是它所属的外部类的对象,所以,只要有外部类,就可以实例化内部类。也就是可以不创建外部类的实例对象就可以初始化其内部类哈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马