Sobes.tech
Middle+

Jaki typ dziedziczenia jest używany w JavaScript? Czy klasy mogą mieć dziedziczenie wielokrotne?

sobes.tech AI

Odpowiedź od AI

W JavaScript używany jest prototypowe dziedziczenie, a wraz z pojawieniem się klas (ES6) — jest to cukierek składniowy nad prototypami. Klasy w JS obsługują dziedziczenie pojedyncze, czyli klasa może dziedziczyć tylko od jednego rodzica.

W JavaScript nie ma dziedziczenia wielokrotnego klas, ale można używać mixinów — funkcji, które dodają metody do klasy, aby imitować dziedziczenie wielokrotne.

Przykład dziedziczenia pojedynczego:

class Animal {
  speak() {
    console.log('Dźwięk zwierzęcia');
  }
}

class Dog extends Animal {
  speak() {
    console.log('Hau!');
  }
}

const dog = new Dog();
dog.speak(); // Hau!

Przykład mixina:

const CanFly = Base => class extends Base {
  fly() {
    console.log('Latanie');
  }
};

class Bird {}
class Eagle extends CanFly(Bird) {}

const eagle = new Eagle();
eagle.fly(); // Latanie