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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class Demo1 {
        public static void main(String[] args) {
                Demo1 demo1 = new Demo1();

                //这里该如何new一个方法中的内部类出来???
                ??
               
                class Demo2 {
                        static int x = 0;        //为什么在这个内部类里面不能定义静态的变量???
                        public Demo2() {
                                x += 1;
                                System.out.println("这里是内部类" + x);
                        }
                }
        }
}

9 个回复

倒序浏览
内部类在成员位置上时,当内部类中定义了静态的成员时,内部类也必须被static修饰
应该是 static class Demo2{}
回复 使用道具 举报
方青木 发表于 2014-3-19 16:34
内部类在成员位置上时,当内部类中定义了静态的成员时,内部类也必须被static修饰
应该是 static class Dem ...

不对啊,我试过了,不能通过编译
回复 使用道具 举报
静态只能修饰成员变量,不可以修饰局部变量
回复 使用道具 举报
抱歉,看错了,你的内部类定义在局部的,不可以被static修饰,所以内部不可以定义静态成员
回复 使用道具 举报
静态成员不是对象的特性,它类似于C语言中的全局变量,而内部类通常是用来创建内部对象用的,所以把全局变量放在内部类中完全没有意义
回复 使用道具 举报
因为  class Demo2 是非静态的,所以它里面不能定义静态的变量
回复 使用道具 举报
王竞 中级黑马 2014-3-19 23:15:33
8#
学习代码 发表于 2014-3-19 17:08
静态只能修饰成员变量,不可以修饰局部变量

哦哦,这样啊、、谢谢
回复 使用道具 举报
王竞 中级黑马 2014-3-19 23:16:52
9#
青木郎 发表于 2014-3-19 17:29
静态成员不是对象的特性,它类似于C语言中的全局变量,而内部类通常是用来创建内部对象用的,所以把全局变 ...

恩恩,明白咯
回复 使用道具 举报
你用Myeclipse或eclipse等开发工具就能很好的学习如何处理一些编译时的问题。红色叉叉报错,点他有注解。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马