lua物件導向

2021-08-13 18:57:17 字數 1663 閱讀 3777

直接貼**,參考的也是別人的,只不過其中幾點,增加一點自己的理解

local baseclass ={};

print(「baseclass是」..tostring(baseclass));

– 定義index屬性,指向本身

baseclass.__index =baseclass;

– 定義建構函式

function baseclass:new(a)

– 定義私有表,屬性儲存在子表obj中

local obj = ;

– 設定obj表的原表為self,即baseclass

– 此時查詢obj的屬性就會自動去查詢baseclass,同時查詢baseclass又會自己找自己

setmetatable(obj, self);

return obj;

end– 定義成員方法

function baseclass:printinfo()

print(「表是」..tostring(self)..」列印資訊」..self.a);

endlocal classobj =baseclass:new(10);

print(「新物件是」..tostring(classobj));

– classobj沒有printinfo方法,而是通過元表,得到的baseclass的printinfo方法,列印中

–傳遞過去的self其實是classobj自身

– 子類,繼承

local childclass ={};

–設定子類元表,子類沒有就去父類尋找

setmetatable(childclass,baseclass);

–設定index屬性,指向自身

childclass.__index= childclass;

– 子類建構函式

functionchildclass:new(a,b)

– 和baseclass一樣的方式

– 不同之處在於子表要「繼承」父類

local obj = baseclass:new(a);

– 新增自身特有屬性

obj.b = b;

setmetatable(obj,self);

return obj;

end–子類的方法

functionchildclass:printchildinfo()

print(「子類的方法」..self.b);

end– 多型

– 重寫父類方法

functionchildclass:printinfo()

–這裡的self是子類中的子表

print(「多型」..self.a);

endlocal childobj =childclass:new(50, 5);

childobj:printchildinfo();

–呼叫childobj沒有的方法,查詢元表baseclass

childobj:printinfo();

列印的結果是:

子類的方法5

多型50

Lua 物件導向

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

Lua 物件導向

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

Lua 物件導向

物件導向 組成 成員變數 成員函式 要求 每個物件,由類生成,有自己的成員變數 使用共同的成員函式 lua構造物件導向 原理用table表示成員變數 用function表示成員函式 用metatable關聯物件和類 實現1 空類 2 class 34 指向自己 5 class.index class...