黑马程序员技术交流社区

标题: 内部类为非静态时,里面的方法为静态时,为什么无法编译? [打印本页]

作者: chenglong25    时间: 2016-6-30 23:26
标题: 内部类为非静态时,里面的方法为静态时,为什么无法编译?
除了内部类为非静态,方法为静态的不能编译,其余均正常.
代码如下:
class Test02 {
        public static void main(String[] args) {
                Outer.Inner1 a = new Outer().new Inner1() ;
                a.print();
               
                Outer.Inner3 s = new Outer.Inner3() ;
                s.print();

                Outer.Inner4.print();
        }
}
class Outer {
        //1、内部类与方法均为非静态
        class Inner1 {
                public void print() {
                        System.out.println("print1");
                }
        }

        //2、内部类为非静态 ,方法为静态
        //为什么编译错误,如何输出?  静态方法不能引用外部的非静态.
        /*class Inner2 {                    
                public static void print() {       //Test02.java:24: 错误: 内部类Outer.Inner2中的静态声明非法
                        System.out.println("print2");
                }
        }*/
        //3、内部类为静态 ,方法为非静态
        static class Inner3 {
                public void print() {
                        System.out.println("print3");
                }
        }
        //4、内部类与方法均为静态
        static class Inner4 {
                public static void print() {
                        System.out.println("print4");
                }
        }
}






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