本帖最后由 喜欢流浪 于 2013-5-30 22:23 编辑
写出下列代码的结果- class TD
- {
- int y=6;
- class Inner
- {
- static int y=3;
- void show()
- {
- System.out.println(y);
- }
- }
- }
- class TC
- {
- public static void main(String[] args)
- {
- TD.Inner ti=new TD().new Inner();
- ti.show();
- }
- }
复制代码 老师给出的直接答案是:
编译失败,非静态内部类中不可以定义静态成员。
内部类中如果定义了静态成员,该内部类必须被静态修饰。
我直接将原题进行编译 会出现
内部类不能有静态声明的提示;
查阅发现有这样解释:
内部类的对象默认持有创建它的那个封装类的一个对象的句柄。
然而,假如我们说一个内部类是static的,这种说法却是不成立的。static内部类意味着:
(1) 为创建一个static内部类的对象,我们不需要一个外部类对象。
(2) 不能从static内部类的一个对象中访问一个外部类对象。
所以我想说本题的直接错误是 内部类中不能有静态声明 因此
修改:内部类中不能有静态声明 修改 将static 去掉
不知道对不对啊!
|
|