- Java code
class A{ public A() { System.out.println("I am a"); } public static void main(String arg[]) { A a = new A(); //B b = new B(); C c = new C(); D d = new D(); } class B { public B() { System.out.println("I am b"); } } static class C { public C() { System.out.println("I am c"); } }} class D{ public D() { System.out.println("I am d"); }}
为什么在A类里面写的类B就不能直接调用构造函数(必须要在类名前加static,像类C这样)
而在A类外面写的类D就可以直接被调用构造函数,不需要在类D前加static
------解决方案--------------------------------------------------------
B属于A的内部类,也就是A的成员变量,想使用成员变量就必须先实例化它所在的类,原因就是B是成员变量,
而加上static就属于静态变量默认是A.B全名,因为在A的静态方法里边所以不加A也可以调用
------解决方案--------------------------------------------------------
B是内部类 要用它你的首先把A创建好才行,C虽然写在A的内部,但Static关键字将它变为静态类,而非内部类了。
------解决方案--------------------------------------------------------
这样就好了 a.new B()
必须要现有外部类的实例