When do you need to explicitly call a superclass constructor?

后端 未结 3 1659
忘掉有多难
忘掉有多难 2020-11-27 12:46

So say I have a subclass that extends a superclass. In what scenarios do I need to explicitly type super() to get the superclass constructor to run?

I\

相关标签:
3条回答
  • 2020-11-27 13:22

    You never need just

    super();
    

    That's what will be there if you don't specify anything else. You only need to specify the constructor to call if:

    • You want to call a superclass constructor which has parameters
    • You want to chain to another constructor in the same class instead of the superclass constructor

    You claim that:

    At the same time I've also seen instances on here where someone's problem was not explicitly calling super().

    Could you give any examples? I can't imagine how that's possible...

    0 讨论(0)
  • 2020-11-27 13:28

    If you don't explicitly call a super constructor the argument less constructor (super()) will be called. This means you have to call a specific constructor yourself if there's no reachable argument-less constructor of the super class.

    But often enough you want a different constructor anyways even if you could use the default constructor - depends on your code.

    Also note that if no constructor is declared the compiler generates a public default constructor automatically, but as soon as you write your own constructor this does not happen anymore.

    0 讨论(0)
  • 2020-11-27 13:28

    The super() method is always called in constructors of sub-classes, even if it is not explicitly written in code.

    The only time you need to write it, is if there are several super(...) methods in the super-class with different initialization parameters.

    0 讨论(0)
提交回复
热议问题