直接貼**,參考的也是別人的,只不過其中幾點,增加一點自己的理解
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...