除了内部类为非静态,方法为静态的不能编译,其余均正常.
代码如下:
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");
}
}
}
|
|