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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夕颜 中级黑马   /  2015-4-29 03:49  /  709 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如下的代码提示如下的错误,问各位大神,这是静态调用的问题吗?
代码如下:
class Demo
{
        static int num = 7;
        static class Inner
        {
                static int num = 8;//这个属于内部类里面的成员
                static void method()
                {
                        //static int num = 9;//局部变量不能用成员修饰符修饰
                        System.out.println("num="+num);
                }
        }
        void function()
        {
                //Inner in = new Inner();
                Inner.method();
        }
}
class InnerClassDemo1
{
        public static void main(String[] args)
        {
                Demo d = new Demo();
                d.function();

                Demo.Inner in = new Demo().new Inner();
                in.method();
                //new Demo().Inner.method();
        }
}

错误提示:
C:\Users\cecy\Desktop\javastudy\javacode\day9>javac InnerClassDemo1.java
InnerClassDemo1.java:32: 错误: 限定的新静态类
                Demo.Inner in = new Demo().new Inner();
                                ^
1 个错误

C:\Users\cecy\Desktop\javastudy\javacode\day9>

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

7 个回复

倒序浏览
是的,新建内部类对象格式错误。因为是静态内部类,应该是new Demo.Inner()
如果访问静态成员,new Demo.Inner.method()
回复 使用道具 举报
Ray丶少年 发表于 2015-4-29 09:07
是的,新建内部类对象格式错误。因为是静态内部类,应该是new Demo.Inner()
如果访问静态成员,new Demo.In ...

第一个正确的,第二个匿名对象调用提示:
InnerClassDemo1.java:33: 错误: 找不到符号
                new Demo.Inner.method();
                              ^
  符号:   类 method
  位置: 类 Inner
1 个错误
回复 使用道具 举报
夕颜 发表于 2015-4-29 13:50
第一个正确的,第二个匿名对象调用提示:
InnerClassDemo1.java:33: 错误: 找不到符号
                n ...

第二个应该是 new Demo.Inner().method();
如果按照之前的写法,new关键字新建的是method()这个内部类,而程序里并不存在这个类,只有这个方法,方法是不能通过new关键字在堆内存中创建的,所以会报错找不到符号。
回复 使用道具 举报
是的,新建内部类对象格式错误
回复 使用道具 举报
Dylon 发表于 2015-4-30 00:23
第二个应该是 new Demo.Inner().method();
如果按照之前的写法,new关键字新建的是method()这个内部类, ...

嗯嗯  是的  谢谢解答,静态时也可以写成:Demo.Inner.method();
回复 使用道具 举报
夕颜 发表于 2015-4-29 13:50
第一个正确的,第二个匿名对象调用提示:
InnerClassDemo1.java:33: 错误: 找不到符号
                n ...

真不好意思,写错了,访问静态成员是Demo.Inner.method()  (都是静态的直接类名调用)
回复 使用道具 举报
夕颜 中级黑马 2015-4-30 10:24:15
8#
Ray丶少年 发表于 2015-4-30 10:07
真不好意思,写错了,访问静态成员是Demo.Inner.method()  (都是静态的直接类名调用) ...

嗯嗯 没事的  多谢指点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马