lua實現繼承

2021-06-20 04:04:22 字數 967 閱讀 2349

lua本身沒有像c++一樣的繼承功能

但是我們可以自己實現乙個類似c++的繼承功能

書本也有詳細介紹,不過讀起來確實費解,所以本人自己寫了乙個簡單的繼承,一目了然,用來學習很容易入手

完整**

-- 基類

people = {}

function people:new(o)

o = o or {}

setmetatable(o, self)

self.__index = self

return o

end-- 基類方法一

function people.dowork()

print("基類方法一")

end-- 基類方法二

function people.gohome()

print("基類方法二")

end-- 子類繼承基類

boy = people:new()

-- 子類方法一

function boy.study()

print("子類方法一")

endfunction boy.play()

print("子類方法二")

end-- 開始呼叫  這裡s是子類物件,可以呼叫子類自有的功能,也可以呼叫基類的功能。。

-- 子類物件

s = boy:new()

p = people:new()

print("下面是子類呼叫")

s.study() -- 子類方法一

s.play()  -- 子類方法二

s.dowork()-- 基類方法一

s.gohome()-- 基類方法二

print("下面是基類物件呼叫")

--p.study() -- 這兩個是子類特有的,基類物件不能呼叫

--p.play()

p.dowork() -- 基類方法一

p.gohome() -- 基類方法二

lua中實現繼承

什麼是元表 元表像是乙個 操作指南 裡面包含了一系列操作的解決方案,例如 index方法就是定義了這個表在索引失敗的情況下該怎麼辦。index元方法 很多人對此都有誤解,這個誤解是 如果a的元表是b,那麼如果訪問了乙個a中不存在的成員,就會訪問查詢b中有沒有這個成員。而這個理解是完全錯誤的,實際上,...

lua實現類的繼承

local class function class super local class type class type.ctor false class type.super super class type.new function local obj do 遞迴呼叫建構函式,實現構造基類的資料...

lua實現偽多型繼承

通過lua的設定元表 index欄位,巧妙的運用在無法索引到物件的key時會呼叫 index的機制,實現了偽多型 繼承。如下 inheritance classtotaltable function inheritance class father local classvo classvo.con...