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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 笑轻轻 中级黑马   /  2014-8-10 09:33  /  1933 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我在外部类的静态方法中调用静态内部类以:Outer.Inner();编译不能通过。而new Outer.Inner();编译却能通过。为什么静态内部类不能直接以外部类的类名调用,而要用外部类的对象调用呢?非静态内部类的对象寄存于外部内的对象中,而静态内部类的对象为什么也要以外部类的对象才能调用?

6 个回复

倒序浏览
外部类不静态的话是不加载的,不先加载外部类,怎么知道你建了内部类
回复 使用道具 举报
ysdolls 发表于 2014-8-10 09:37
外部类不静态的话是不加载的,不先加载外部类,怎么知道你建了内部类

好高深莫测的回答 鄙人愚昧
回复 使用道具 举报
笑轻轻 发表于 2014-8-10 15:09
好高深莫测的回答 鄙人愚昧

我也是菜鸟,答的可能不对 抱歉
回复 使用道具 举报
如果一个内部类是静态的,测试类要想直接访问,这个时候,创建对象的格式和开始的格式应该是:
                外部类名.内部类名 变量 = new 外部类名.内部类名();
回复 使用道具 举报
内部类如果想要在外部类中使用要创建对象,如果进行了static修饰,相当于外部成员,可以访问的只有外部类的静态,这就是你说的静态访问。而且Inner是外部类中的类,所以你的外部类至少要有对象。
回复 使用道具 举报
kakasa 中级黑马 2014-8-11 10:31:50
7#
调用的是方法不是类吧,想访问内部类里的方法 只能new内部类对象后再调用方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马