public class A {
public static class B {
public void fun() {
System.out.println("OK");
}
} public static void main(String[] args) {
A a = new A();
A.B ab = new A.B();
//A.B b = a.new B();//为什么这样不行
//A.B b = new A().new B();//为什么这样不行
}
}
public static class B {
public void fun() {
System.out.println("OK");
}
} public static void main(String[] args) {
A a = new A();
A.B ab = new A.B();
//A.B b = a.new B();//为什么这样不行
//A.B b = new A().new B();//为什么这样不行
}
}
static方法是类级别的方法
所以调用时要类名.方法名
而普通方法调用的时候,只要对象.方法名
public static class B {
public void fun() {
System.out.println("OK");
}
}
public class C {
public void fun() {
System.out.println("OK");
}
}
public static void main(String[] args) {
A a = new A();
A.B ab = new A.B();
A.C b = a.new C();//成功
A.C c = new A().new C();//成功
}
}
为什么static的内部类就不行了呢?
换成非static的内部类是可以A.B b = new A().new B();的
再看内部类,其实和static修饰的其他东西思想是一致的.
楼主注意类B和C的区别,就在一个static 上,
对于static,你要访问内部类或方法,必须是通过外部类以:外部类.内部类(方法)
在别的地方看到的
感觉比较合理