Luaはクラス継承を作成します

971 ワード

クラスを作成
~~~ lua
--Shapeという名前のベースクラスを定義します
local Shape = class("Shape")
-
-ctor()はクラスのコンストラクション関数で、Shapeを呼び出しています.New()Shapeオブジェクトインスタンスを作成すると自動的に実行されます
function Shape:ctor(shapeName)
    self.shapeName = shapeName
    printf("Shape:ctor(%s)", self.shapeName)
end

--Shapeにdraw()というメソッドを定義します.
function Shape:draw()
    printf("draw %s", self.shapeName)
end

--CircleはShapeの継承クラスです
local Circle = class("Circle", Shape)
function Circle:ctor()
    --   ctor()  , 
    --  .super  
    Circle.super.ctor(self, "circle")
    self.radius = 100
end

function Circle:setRadius(radius)
    self.radius = radius
end

--親を上書きする同じ名前のメソッド
function Circle:draw()
    printf("draw %s, raidus = %0.2f", self.shapeName, self.raidus)
end