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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
        静态内部类
        当内部类出现在外部类成员的位置上时,该内部类可以被成员修饰符修饰。
        如:private 将内部类在外部类中进行封装;
                static 修饰后将有static的特性。
                1.当内部类被static修饰后,只能访问被static修饰的外部类成员,出现了访问局限性。
                2.当内部类定义了静态成员,该内部类必须是静态的
                3.当外部类的静态方法访问内部类时,该内部类必须是静态的。
               
*/

class Outer
{
        public static int x=3;//因为类Inner是静态类,所以x也要是静态的
        
        static class Inner
        {
                void method()
                {
                        System.out.println("非静态方法"+x);
                }
                static void function()//因为内部类定义了静态成员,所以该内部类Inner必须是静态的
                {
                        System.out.println("静态方法"+x);
                }
        }
        class Inner2
        {               
                void method()
                {
                        System.out.println("非静态方法"+x);
                }
        }
        static void show()
        {
                new Inner2().method();//编译会出错,因为当外部类的静态方法访问内部类时,该内部类必须是静态的。
                new Inner().method();//编译通过
        }
}

class Test
{
        public static void main(String[] args)
        {
                //外部类调用静态内部类的非静态成员
                new Outer.Inner().method();
                //外部类调用静态内部类的静态成员
                Outer.Inner.function();
               
                Outer.show();
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马