面向對象
組成:成員變量、成員函數
要求:每個對象,由類生成,有自己的成員變量、使用共同的成員函數
Lua構造面向對象
原理
用table表示成員變量
用function表示成員函數
用metatable關聯對象和類
實現
1 -- 空類 2 Class = {} 3 4 -- 指向自己 5 Class.__index = Class 6 7 -- 成員變量 8 Class.val = "Class" 9 10 -- 成員函數 11 function Class:print() --相當 Class.print(self) 12 print("Class:print val = "..self.val) 13 end 14 15 function Class:modify() 16 self.val = "modify" 17 end 18 19 -- 構造函數 20 function Class:new(initVal) 21 -- 申請空間 22 local object = {} 23 24 -- 初始數據 25 object.val = initVal 26 27 -- 關聯class 28 setmetatable(object,Class) 29 30 -- 返回對象 31 return object 32 end 33 34 -- test 35 local obj = Class:new("object") 36 print("before modify") 37 Class:print() 38 obj:print() 39 print("after modify") 40 obj:modify() 41 Class:print() 42 obj:print() 43 44 -- output 45 -- before modify 46 -- Class:print val = Class 47 -- Class:print val = object 48 -- after modify 49 -- Class:print val = Class 50 -- Class:print val = modify