2.3.21 Inheritance

In Object-oriented languages, we want to stay DRY and avoid getting WET. Inheritance allows us to avoid writing duplicate code. JavaScript classes give us this ability…

We can use this animal class and extend (inherit) it to another object. Here’s an example…

The output would be “Bongo”. We extended the Animal class. This gives us access to all of the functionality within the Animal class. That is how we were able to get access to the name property. Notice that there is no constructor in the Primate class. What if we had one though?

Note: Due to how StackBlitz works, the error will show a different error. When opened and viewed through the browser, it should show as followed in the image below.

Image showing error stating, 'Uncaught reference error: Must call super constructor fileName in derived class before accessing this or returning from derived constructor at new primate.'

It would return a reference error because the code is looking to the constructor within the Primate class and not the Animal class. We need it to look to the constructor in the Animal class first. We do this by using the “super” method…

Our code would still return a reference error because the property value we sent is not going all the way through to the Animal class constructor. We have to send the argument through the super function.

What if we had a method with the same name in both the Primate class and the Animal class? The secondary class method runs, but if we want the Animal method to run, we use super again…

The output would read, “Bongo says “ugh!”. So we can use inheritance to mix and match functionality and even override if we wish.