在java中,super()可用于调用任何父方法或仅调用父构造函数

时间:2015-08-24 07:18:16

标签: java inheritance constructor super

是否可以使用子类方法中的super()调用任何父类方法,或者仅用于调用父构造函数

2 个答案:

答案 0 :(得分:6)

对于调用方法,语法为super.methodName()。只需super()即可调用构造函数。

它与this关键字非常相似,但对于父级。

this()从另一个构造函数中调用此类构造函数。 super()从childs构造函数调用父构造函数。

this.methodName()调用当前类的方法,super.methodName()调用父类的方法。

编辑:正如@harry在评论中提到的那样,父母的方法应该对孩子可见,以便能够使用super.methodName()。无法访问父级中的私有方法。

答案 1 :(得分:0)

使用超级关键字:

  1. super() - 只有super作为构造函数调用才会调用超类默认构造函数
  2. super(参数) - 仅调用其父类的参数化构造函数。
  3. super.methodName() - 如果方法可见性是公共的或受保护的,则调用其父类链的方法。
  4. 如果子类构造函数显式或隐式地调用其超类的构造函数,您可能会认为将调用一整个构造函数链,一直回到Object的构造函数。事实上,情况就是这样。它被称为构造函数链接,当需要很长的类下降时你需要注意它
  5. 希望这有帮助!