Java 构造函数之父类和子类

先来一句重要的结论:

如果一个类写了有参构造函数,那么无参的构造函数就不能用了。如果没有构造函数,Java会默认有一个无参的构造函数。这个无参的构造函数可以不用写出来。

在Java代码中,会发现如果类有继承的话,很多都写了super()方法,而且还写在了构造方法的第一行,不然就会报错。

这个是Java的规定:子类继承父类,子类的构造方法必须调用super()即父类的构造方法,而且必须放在构造方法的第一行。

但是有时候自己写继承的时候,却没有调用父类的构造方法,因为:

如果父类"只"有无参构造方法,且不打算重写子类的构造方法,为节省代码量,子类构造方法可以不写,但是实际上是已经写了,系统默认调用父类无参构造方法super(),即默认会在子类的构造方法中的第一行加上父类的无参构造方法 。

敲黑板,划重点来了:

总结:子类构造函数必须在构造函数第一行调用父类构造函数,当子类构造函数没有调用父类构造函数的时候,是因为父类构造包含无参构造函数,为了节省代码,系统会自动添加调用。

如果父类有无参构造方法,子类构造方法的第一句是默认的super()且可以省略;如果父类没有无参的构造方法,只有有参的构造方法,则super不能省略,super()中加上对应的参数就行了。

发布了23 篇原创文章 · 获赞 18 · 访问量 4764

猜你喜欢

转载自blog.csdn.net/guangtouwj/article/details/105075959