# Inheritance with extends — JavaScript

Source: https://www.geekswithgeeks.com/en/javascript/js-inheritance

> Building a class on top of another, and calling into the parent.

## extends and super

`extends` links a subclass to a parent; `super.method()` calls the parent's version from inside the override.

```js
class Animal {
  constructor(name) { this.name = name; }
  speak() { return `${this.name} makes a sound.`; }
}
class Dog extends Animal {
  speak() {
    return `${super.speak()} Specifically, a bark!`;
  }
}
console.log(new Dog("Rex").speak());
```

## Why inherit

`extends` lets a subclass reuse and extend a parent's behavior instead of duplicating it — the core OOP idea of reuse.

## super() must come first

In a subclass constructor, call `super(...)` before using `this` — JS enforces this rule strictly.
