黑马程序员技术交流社区

标题: 前面加上修饰符,会出现无法从静态上下文中引用非静态 ... [打印本页]

作者: 靓仔    时间: 2014-2-28 15:55
标题: 前面加上修饰符,会出现无法从静态上下文中引用非静态 ...
本帖最后由 靓仔 于 2014-3-1 11:36 编辑

class Outer
{
        private int x =3;
        class Inner//如果前面加上修饰符,会出现无法从静态上下文中引用非静态 变量x。
        {
                void function()
                {
                        System.out.println("x = "+x);
                }
        }
}
class  InnerDemo2
{
        public static void main(String[] args)
        {
               
        }
}
作者: 李金中    时间: 2014-2-28 16:10
内部类想要访问 外部的静态成员,必须自己也要是静态的。跟 普通函数访问的规则一样。
作者: asvsass    时间: 2014-2-28 17:31
private int x =3;
X是成员变量  需要对象才可以调用
如果要加修饰符 要这样才可以
class String1
{
        private static int x =3;
        static class Inner//如果前面加上修饰符,会出现无法从静态上下文中引用非静态 变量x。
        {
              static   void function()
                {
                        System.out.println("x = "+x);
                }
        }
      public static void main(String[] args)
        {
                String1.Inner.function();
        }

}
把成员变量也变成静态的

作者: 贺利英    时间: 2014-2-28 20:05
注意毕老师讲课的时候总结的内部类的规律:1.内部类可以直接访问外部类中的成员,包括私有;2.当内部类被static修饰后,只能直接访问外部类的static成员,出现访问局限;3.当内部类定义了静态成员,该内部类也必须是static的;4.当外部类的静态方法访问内部类时,内部类也必须是static的。所以当你在内部类前面加修饰符static时 要想继续能访问外部类的成员x的话,则x也许是被static修饰的。否则会编译失败。




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