public class Test{ public static void main (String args[]){ P1 m1 = new P1(); m1.P1();//这句为什么不可以?构造方法不可以被调用吗? } } class P1{ int n=9; int nn; P1(){ System.out.println("P1"); } void P2(){ System.out.println("P2"); } }
楼主不必过分纠结于这个问题。你可以换个角度来思考这个问题。在java中,如果你想创建一个对象(非基本数据类型)。必须在利用new 关键字在堆中申请空间,然后调用构造方法初始化对象,然后返回这个对象的引用。例如 new people()因为,java为了保证对象都被初始化。才采用了这种机制。所以不需要你人为来调用。而且,因为构造方法是只有在对象创建时才可以调用的。因为JVM自己调用完了。所以也不允许你自己来调用。
楼主不必过分纠结于这个问题。你可以换个角度来思考这个问题。在java中,如果你想创建一个对象(非基本数据类型)。必须在利用new 关键字在堆中申请空间,然后调用构造方法初始化对象,然后返回这个对象的引用。例如 new people()因为,java为了保证对象都被初始化。才采用了这种机制。所以不需要你人为来调用。而且,因为构造方法是只有在对象创建时才可以调用的。因为JVM自己调用完了。所以也不允许你自己来调用。
不能调用