Lua hat keine Klassen, aber Metatabellen: Mit setmetatable legst du fest, wie sich eine Tabelle bei fehlenden Schlüsseln oder Operatoren verhält. Über __index erreichst du Vererbung. So bildest du Klassen nach: Methoden liegen in einer Klassentabelle, Objekte verweisen darauf. Mit : übergibt Lua self automatisch.
local Konto = {}
Konto.__index = Konto
function Konto.new(inhaber)
return setmetatable({ inhaber = inhaber, stand = 0 }, Konto)
end
function Konto:einzahlen(betrag)
if betrag > 0 then self.stand = self.stand + betrag end
end
local k = Konto.new("Mia")
k:einzahlen(50)
print(k.stand) -- 50Merke
setmetatableverknüpft Tabellen mit Verhalten__indexermöglicht Vererbungobj:methode()übergibtselfautomatisch
Aufgabe
Erweitere die Klasse um `abheben` mit Prüfung auf ausreichenden Stand.