java题:如果子类有两个构造方法,一个有参数,一个无参,父类只有一个,创建一个无参的对象,无参数

java题:如果子类有两个构造方法,一个有参数,一个无参,父类只有一个,创建一个无参的对象,无参数的构造方法里调用有参数的构造方法。这样执行会调用两次父类的构造方法呢

只调用一次父类构造函数,构造函数是对象实例化时调用的,即使在构造函数中显式调用重载的其它构造函数,被调用的也只被看做普通函数追问

为什么呢

追答

因为构造函数是被实例化过程调用的,无论你重载多少个构造函数,实际的构造函数只有一个,也只被调用一次,比如
classFoo foo = new classFoo(); //此时的实际构造函数是无参的
classFoo bar = new classFoo(a, b); //这种情况的实际构造函数是带有两个参数的版本

虽然你在classFoo()中调用了classFoo(a,b)这个函数,但后者并非被当做构造函数来看待,只能当做普通的成员函数来执行

追问

被当做普通方法里面就没有默认的调用父类的无参的构造方法吧?但是为什么就被当做普通的方法了呢

追答

第一个问题:普通方法的确不调用父类构造函数。
第二个问题:前面已经做了解答,实际的构造函数只有一个,实例化过程中也只调用一次构造函数

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答