稻花香

软件开发,喜欢读书,编程,禅修

JAVA中的super关键字

13 Jul 2018 » Java

子类构造方法中的super()或者super(args)

子类中的构造方法中的super()是调用父类中的构造方法,其中参数列表必须和父类的某个参数列表匹配。

类与其直接父类之间的构造方法存在约束关系

有以下几条重要原则:

  • 按继承关系,构造方法是从顶向下进行调用的。

  • 如果子类没有构造方法,则它默认调用父类无参的构造方法,如果父类中没有无参数的构造方法,则将产生错误。

  • 如果子类有构造方法,那么创建子类的对象时,先执行父类的构造方法,再执行子类的构造方法。

  • 如果子类有构造方法,但子类的构造方法中没有super关键字,则系统默认执行该构造方法时会产生super()代码,即该构造方法会调用父类无参数的构造方法。

  • 对于父类中包含有参数的构造方法,子类可以通过在自己的构造方法中使用super关键字来引用,而且必须是子类构造函数方法中的第一条语句。

  • Java语言中规定当一个类中含有一个或多个有参构造方法,系统不提供默认的构造方法(即不含参数的构造方法),所以当父类中定义了多个有参数构造方法时,应考虑写一个无参数的构造方法,以防子类省略super关键字时出现错误。