0Pricing
Lua Academy · Lektion

Mehrstufige Vererbung

Unterstützen Sie tiefe Vererbungshierarchien mit korrekter __index-Delegation

Mehrstufige Vererbung ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Rückblick: Einfachvererbung

Einfachvererbung wird erreicht, indem Child.__index = Parent gesetzt wird. Bei der Methodenauflösung wird, falls die Methode nicht in Child vorhanden ist, über __index in Parent gesucht.

Klassenfabrik für Vererbung erweitern

Fügen Sie der Basisklasse eine Methode :extend() hinzu, die eine mit dem Parent verknüpfte Unterklasse erstellt.

function Animal:extend()
  local cls = {}
  cls.__index = cls
  setmetatable(cls, {__index = self})
  cls.super = self
  function cls:new(...)
    local inst = setmetatable({}, cls)
    if inst.init then inst:init(...) end
    return inst
  end
  return cls
end

Eine Unterklasse erstellen

Erstellen Sie Dog als Unterklasse von Animal, überschreiben Sie init und fügen Sie neue Methoden hinzu.

local Dog = Animal:extend()
function Dog:init(name)
  Dog.super.init(self, name, "Woof")
  self.tricks = {}
end
function Dog:learnTrick(trick)
  self.tricks[#self.tricks+1] = trick
end
local d = Dog:new("Rex")
d:learnTrick("sit")
d:speak()  -- Rex says Woof

Mehrstufige Kette

Erweitern Sie Dog, um GuideDog zu erstellen – eine dreistufige Vererbungskette.

local GuideDog = Dog:extend()
function GuideDog:init(name, owner)
  GuideDog.super.init(self, name)
  self.owner = owner
end
function GuideDog:guide()
  print(self.name .. " guides " .. self.owner)
end

super-Methoden aufrufen

Rufen Sie super immer über die Klassenreferenz und nicht über self auf, um eine unendliche Rekursion zu vermeiden.

function Dog:init(name)
  Dog.super.init(self, name, "Woof")  -- explicit super call
end

Reihenfolge der Methodenauflösung

Lua löst Methoden von unten nach oben über __index-Ketten auf. GuideDog → Dog → Animal → nil. Der erste gefundene Eintrag wird verwendet.

Methoden überschreiben

Definieren Sie in der Unterklasse eine Methode mit demselben Namen, um die ursprüngliche Methode zu überschreiben. Rufen Sie super bei partiellen Überschreibungen ausdrücklich auf.

function Dog:speak()
  print(self.name .. " barks!")
  Dog.super.speak(self)  -- also call parent speak
end

Tiefenbegrenzungen

Sehr tiefe Vererbungsketten verlangsamen die Methodenauflösung (jede Ebene fügt einen __index-Schritt hinzu). Bevorzugen Sie bei mehr als 3–4 Ebenen die Komposition.

Klassenzugehörigkeit prüfen

Durchlaufen Sie die Metatable-Kette, um zu prüfen, ob eine Instanz zu einer Klasse gehört.

local function isA(instance, cls)
  local mt = getmetatable(instance)
  while mt do
    if mt == cls then return true end
    mt = getmetatable(mt)
  end
  return false
end
print(isA(d, Dog))     -- true
print(isA(d, Animal))  -- true

Tiefe Kopie mit Erhalt der Klasse

Bewahren Sie beim Erstellen tiefer Kopien von Instanzen die Metatable auf, damit die Kopie weiterhin eine Instanz der richtigen Klasse ist.

Wann Komposition vorzuziehen ist

Verwenden Sie Vererbung für echte Ist-ein-Beziehungen (Dog ist ein Animal). Verwenden Sie Komposition (Komponententabellen) für Hat-ein-Beziehungen oder zum flexiblen Kombinieren von Verhalten.

Vererbungsfrage

Wie funktioniert mehrstufige Vererbung in Lua?

Zusammenfassung: Mehrstufige Vererbung

Erweitern Sie die Klassenfabrik um eine Methode :extend(), die __index-Verknüpfungen verkettet. Rufen Sie super ausdrücklich mit ClassName.super.method(self, ...) auf. Prüfen Sie die Klassenzugehörigkeit, indem Sie die Metatable-Kette durchlaufen.

Häufig gestellte Fragen

Ist die Lektion „Mehrstufige Vererbung“ kostenlos?

Ja — der vollständige Text von „Mehrstufige Vererbung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Mehrstufige Vererbung“?

Unterstützen Sie tiefe Vererbungshierarchien mit korrekter __index-Delegation Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Lua Academy zu starten?

Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Mehrstufige Vererbung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?

Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Entwurf von Basisklassen und Konstruktoren
  2. Mehrstufige Vererbung
  3. Mixin-Komposition und Schnittstellenprüfungen
  4. instanceof und Typ-Introspektion
← Zurück zu Lua Academy