1. 程式人生 > >Lua建立一個類 繼承

Lua建立一個類 繼承

建立一個類

~~~ 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