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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 靓仔 于 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)
        {
               
        }
}

3 个回复

倒序浏览
内部类想要访问 外部的静态成员,必须自己也要是静态的。跟 普通函数访问的规则一样。
回复 使用道具 举报
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();
        }

}
把成员变量也变成静态的
回复 使用道具 举报
注意毕老师讲课的时候总结的内部类的规律:1.内部类可以直接访问外部类中的成员,包括私有;2.当内部类被static修饰后,只能直接访问外部类的static成员,出现访问局限;3.当内部类定义了静态成员,该内部类也必须是static的;4.当外部类的静态方法访问内部类时,内部类也必须是static的。所以当你在内部类前面加修饰符static时 要想继续能访问外部类的成员x的话,则x也许是被static修饰的。否则会编译失败。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马