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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 江南小道士 中级黑马   /  2014-11-17 21:14  /  1529 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 江南小道士 于 2014-11-17 23:54 编辑

代码如下:
class InnerClassDemo2
{
        public static void main(String[] args)
        {
                //Outer out = new Outer();
                //out.method();
                Outer.Inner in = new Outer().new Inner();
                in.function();
               
        }
}

class Outer
{
        static int x = 3;

        static class Inner
        {
                static void function()
                {
                        System.out.println("inner:x="+x);
                }
        }

        void method()
        {
                Inner in = new Inner();
                in.function();
        }
}
InnerClassDemo2.java:7: 错误: 限定的新静态类
                Outer.Inner in = new Outer().new Inner();
                                 ^
1 个错误
编译出现问题

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

7 个回复

倒序浏览
Outer.Inner in = new Outer().new Inner();
                in.function();
主函数里面改为
Outer.Inner in = new Outer.Inner();
                in.function();
就行了:lol  

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
你的这种创建方法是非静态内部类使用的方法,静态的可以直接使用外部类名.内部类名()的方式创建内部类对象。内部类可以看做是外部类的一个成员
回复 使用道具 举报
Outer.Inner in = new Outer().new Inner();这里改一下后面的
回复 使用道具 举报
有陷阱快跑丶 发表于 2014-11-17 21:38
Outer.Inner in = new Outer().new Inner();
                in.function();
主函数里面改为

OK了,多谢。
回复 使用道具 举报
DamonZh 发表于 2014-11-17 21:42
你的这种创建方法是非静态内部类使用的方法,静态的可以直接使用外部类名.内部类名()的方式创建内部类对象 ...

厉害,都是高手啊,给我好大压力
回复 使用道具 举报
DamonZh 发表于 2014-11-17 21:42
你的这种创建方法是非静态内部类使用的方法,静态的可以直接使用外部类名.内部类名()的方式创建内部类对象 ...

厉害,都是高手,给我好大压力:lol
回复 使用道具 举报
Outer.Inner in = new Outer().new Inner();
                in.function();
把这两句改成 Outer.Inner.function();就行了  
static 定义的内部类直接用外部类的类名直接调用就行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马