Inheritance, Mixin

Ez a követelmény az objektumorientált programozás (OOP) alapjaira és haladóbb technikáira vonatkozik. Nézzük át tömören, de világosan:


✅ Öröklődés (Inheritance)

🧩 Lényege:

Egy osztály (gyerek / leszármazott) örökli egy másik osztály (szülő / base class) tulajdonságait és metódusait.

🔧 Példa:

class Animal {
  constructor(public name: string) {}

  speak(): void {
    console.log(`${this.name} makes a sound.`);
  }
}

class Dog extends Animal {
  speak(): void {
    console.log(`${this.name} barks.`);
  }
}

const dog = new Dog('Rex');
dog.speak(); // Rex barks.

✅ Mikor hasznos?

  • Ha több osztálynak van közös viselkedése (DRY elv)
  • Ha polimorfizmust akarsz (pl. speak() mindegyik állatnál más)

✅ Mixin

🧩 Lényege:

A mixin egy olyan technika, ahol több viselkedést “öntesz bele” egy osztályba, nem klasszikus örökléssel.

Mivel TypeScript nem támogatja a többszörös öröklést (extends csak egy lehet), a mixin ezt alternatív módon teszi lehetővé.


🔧 Egyszerű példa:

type Constructor<T = {}> = new (...args: any[]) => T;

function CanFly<TBase extends Constructor>(Base: TBase) {
  return class extends Base {
    fly() {
      console.log('Flying...');
    }
  };
}

function CanSwim<TBase extends Constructor>(Base: TBase) {
  return class extends Base {
    swim() {
      console.log('Swimming...');
    }
  };
}

class Animal {
  constructor(public name: string) {}
}

const MixedAnimal = CanFly(CanSwim(Animal));

const duck = new MixedAnimal('Duck');
duck.fly();  // Flying...
duck.swim(); // Swimming...

🧠 Összefoglalás

FogalomLeírás
ÖröklődésEgy osztály örökli egy másik tulajdonságait/metódusait
MixinEgy vagy több viselkedés komponensszerű hozzáadása egy osztályhoz
Használati példaÖröklődés: Dog extends Animal, Mixin: CanFly(Base)

Ha szeretnél Angular-specifikus példát (pl. BaseComponent, WithDestroyMixin, stb.), szívesen mutatok olyat is.

Was this page helpful?