53 lines
1.2 KiB
Plaintext
Raw Normal View History

There are situations where ``++super()++`` must be invoked and situations where ``++super()++`` cannot be invoked.
The basic rule is: a constructor in a non-derived class cannot invoke ``++super()++``; a constructor in a derived class must invoke ``++super()++``.
Furthermore:
* ``++super()++`` must be invoked before the ``++this++`` and ``++super++`` keywords can be used.
* ``++super()++`` must be invoked with the same number of arguments as the base class' constructor.
* ``++super()++`` can only be invoked in a constructor - not in any other method.
* ``++super()++`` cannot be invoked multiple times in the same constructor.
=== Known Limitations
* False negatives: some issues are not raised if the base class is not defined in the same file as the current class.
== Noncompliant Code Example
----
class Dog extends Animal {
constructor(name) {
super();
this.name = name;
super(); // Noncompliant
super.doSomething();
}
}
----
== Compliant Solution
----
class Dog extends Animal {
constructor(name) {
super();
this.name = name;
super.doSomething();
}
}
----
ifdef::rspecator-view[]
== Comments And Links
(visible only on this page)
include::comments-and-links.adoc[]
endif::rspecator-view[]