Lua學習 物件導向

2021-08-21 09:50:33 字數 1141 閱讀 4028

在菜鳥教程學習lua物件導向時有以下**

-- meta class

shape =

-- 基礎類方法 new

function shape:new (o,side)

o = o or {}

setmetatable(o, self)

self.__index = self

side = side or 0

self.area = side*side;

return o

end-- 基礎類方法 printarea

function shape:printarea ()

print("面積為 ",self.area)

endsquare = shape:new()

-- derived class method new

function square:new (o,side)

o = o or shape:new(o,side)

setmetatable(o, self)

self.__index = self

return o

end

在shape:new的時候返回的是 乙個空表o,o的元表是shape ,把此物件記作a

a的結構:[a]-的元表->shape

在square:new的時候:

注意:square本身就是乙個物件a

建立了乙個空表(此處記作物件b),然後將a設定為b的元表

那麼此時的結構就是 [b(空表)] --的元表--> [a(square)] --的元表-->[shape]

所以square:new的時候建立了乙個空表,square物件的本體是作為空表的元表來存在的,同樣shape也做為square的元表來存在

根據lua對錶元素的訪問流程:

1.在目標表中查詢key,若有返回該元素則return  否則go2

2.若沒有元表則return nil ,否則 go3

3.若元表的__index 為nil 則return nil 否則 go4

4.若__index為方法,則return 否則 go5

5.(此時__index為表)將__index作為目標表從1開始重複

這樣就能實現方法的繼承與重寫了

lua物件導向

直接貼 參考的也是別人的,只不過其中幾點,增加一點自己的理解 local baseclass print baseclass是 tostring baseclass 定義index屬性,指向本身 baseclass.index baseclass 定義建構函式 function baseclass ...

Lua 物件導向

記錄學習過程 建立日期 2019 04 14 物件由屬性和方法組成。lua中最基本的結構是table,所以需要用table來描述物件的屬性。lua 中的 function 可以用來表示方法。那麼lua中的類可以通過 table function 模擬出來。乙個簡單的物件導向例子 屬性 person ...

Lua 物件導向

我們知道,物件由屬性和方法組成。lua中最基本的結構是table,所以需要用table來描述物件的屬性。lua中的function可以用來表示方法。那麼lua中的類可以通過table function模擬出來。至於繼承,可以通過metetable模擬出來 不推薦用,只模擬最基本的物件大部分夠用了 l...