黑马程序员技术交流社区

标题: 请高手帮忙看下静态内部类实例化的问题 [打印本页]

作者: cvnmklop    时间: 2014-10-22 18:59
标题: 请高手帮忙看下静态内部类实例化的问题
怕这个问题沉了特意发帖求教,谢谢

以下是问题的来源
问题的来源
这是我的回复,有理解错的地方希望指正下,还有就是希望能解答我的疑问

首先先解答下前面有人认为以下两行代码错误

[color=rgb(177, 8, 0) !important]复制代码

这两行代码没有错误因为前面有导入内部类
[color=rgb(177, 8, 0) !important]复制代码


我用了下eclipse看了下,说实话我很怀疑这种写法的正确性,请贴出具体来源是从哪里看的,然后你看到的代码有验证过吗?
[color=rgb(177, 8, 0) !important]复制代码

这种写法编译器就通不过,我是这么理解的 new 后面跟的是构造函数 new Outclass.new Innerclass();第一个new 后面是什么?无法理解。那么还有一种写法,两个new正确呢?new Outclass().new Innerclass()是因为内部类非静态只有当外部类实例化后才能创建内部类对象。本质上是对象调用对象中的成员。只不过这个成员比较特殊是内部类的构造函数。
然后让我有疑问的问题就产生了为什么下面这个代码是错误的


[color=rgb(177, 8, 0) !important]复制代码


照理说成员是静态的直接用类名调用是可以的,那么创建对象再调用那就更加没问题了。我试验了下在Outclass类中添加了静态成员变量

[color=rgb(177, 8, 0) !important]复制代码

然后创建外部类对象调用num没有问题为什么 Innerclass ic=new Outclass().new Innerclass();这个形式错了呢?
源码如下,望高手指教  以下代码用的是junit测试的

[color=rgb(177, 8, 0) !important]复制代码


[color=rgb(177, 8, 0) !important]复制代码


[color=rgb(177, 8, 0) !important]


作者: 不轻易    时间: 2014-11-4 00:21
才看到留言,我黑马币都给人了,现在也不多了
作者: 不轻易    时间: 2014-11-4 00:22
不过你自己也勤快点吧~~别老想着别人送,每天过来把任务都做了




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