黑马程序员技术交流社区

标题: 写的关于静态内部类的一个小代码 [打印本页]

作者: MartinYu    时间: 2016-7-5 09:56
标题: 写的关于静态内部类的一个小代码
/*
        静态内部类
        当内部类出现在外部类成员的位置上时,该内部类可以被成员修饰符修饰。
        如: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();
        }
}





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