是这些原因:1.构造函数定义的时候不能有返回值,方法名称必须和类名一样2.可以有多个构造函数,也就是重载3.new的时候是根据参数类型来选择使用哪个构造函数例如:class AAA{ public AAA(){} public AAA(int a){}}如果AAA a = new AAA();调用的就是那个没有参数的构造方法如果AAA a = new AAA(10);调用的就是那个有一个int型参数的构造方法