黑马程序员技术交流社区

标题: static内部类不能用来创建对象吗? [打印本页]

作者: 江南小道士    时间: 2014-11-17 21:14
标题: static内部类不能用来创建对象吗?
本帖最后由 江南小道士 于 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 个错误
编译出现问题
作者: 有陷阱快跑丶    时间: 2014-11-17 21:38
Outer.Inner in = new Outer().new Inner();
                in.function();
主函数里面改为
Outer.Inner in = new Outer.Inner();
                in.function();
就行了:lol  

作者: DamonZh    时间: 2014-11-17 21:42
你的这种创建方法是非静态内部类使用的方法,静态的可以直接使用外部类名.内部类名()的方式创建内部类对象。内部类可以看做是外部类的一个成员
作者: 932755233    时间: 2014-11-17 21:43
Outer.Inner in = new Outer().new Inner();这里改一下后面的
作者: 江南小道士    时间: 2014-11-17 21:52
有陷阱快跑丶 发表于 2014-11-17 21:38
Outer.Inner in = new Outer().new Inner();
                in.function();
主函数里面改为

OK了,多谢。
作者: 江南小道士    时间: 2014-11-17 22:32
DamonZh 发表于 2014-11-17 21:42
你的这种创建方法是非静态内部类使用的方法,静态的可以直接使用外部类名.内部类名()的方式创建内部类对象 ...

厉害,都是高手啊,给我好大压力
作者: 江南小道士    时间: 2014-11-17 22:33
DamonZh 发表于 2014-11-17 21:42
你的这种创建方法是非静态内部类使用的方法,静态的可以直接使用外部类名.内部类名()的方式创建内部类对象 ...

厉害,都是高手,给我好大压力:lol
作者: 舒伟涛    时间: 2014-11-18 11:07
Outer.Inner in = new Outer().new Inner();
                in.function();
把这两句改成 Outer.Inner.function();就行了  
static 定义的内部类直接用外部类的类名直接调用就行




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