--[[
2.給metatable設置metatable實現(xiàn)類的繼承
原理:
metatable也是一個table轧飞,所以可以給metatable設置metatable
即創(chuàng)建一個table(A)衅鹿,作為基類,創(chuàng)建一個table(B)过咬,繼承自A大渤,B也是一個類,然后創(chuàng)建一個B類的對象table(Obj)掸绞。
Obj的metatable是B泵三,也就是說Obj是B類的一個對象,而B的metatable是A集漾,此時可以說B是繼承于A的一個類切黔。
]]
-- Animal類
Animal = {}
Animal.__index = Animal -- Animal是一個類
Animal.type = "unknown animal"
function Animal:new()
local obj = {}
setmetatable(obj, Animal)
return obj
end
function Animal:move()
print("Animal move")
end
-- Tiger類
Tiger = {}
setmetatable(Tiger, {__index = Animal}) -- 繼承自Animal
Tiger.__index = Tiger -- Tiger也是一個類
Tiger.type = "Tiger"
Tiger.name = "FatTiger"
function Tiger:new()
local obj = {}
setmetatable(obj, Tiger)
return obj
end
function Tiger:howl()
print("I am a Tiger.")
end
-- 一個Tiger類的對象
local scott = Tiger:new()
print(scott.type) -- Tiger中的type
print(scott.name) -- Tiger中的name
scott:move() -- 在scott中沒有move字段,則到元表Tiger中找具篇,Tiger中沒有纬霞,則到Tiger的元表Animal中找
scott:howl() -- Tiger中的howl函數(shù)
(Lua中的類 - 2)在Lua中實現(xiàn)類的繼承
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門横蜒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人销凑,你說我怎么就攤上這事丛晌。” “怎么了斗幼?”我有些...
- 正文 為了忘掉前任桐经,我火速辦了婚禮毁兆,結果婚禮上,老公的妹妹穿的比我還像新娘次询。我一直安慰自己荧恍,他們只是感情好瓷叫,可當我...
- 文/花漫 我一把揭開白布屯吊。 她就那樣靜靜地躺著,像睡著了一般摹菠。 火紅的嫁衣襯著肌膚如雪盒卸。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼薇组,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了坐儿?” 一聲冷哼從身側響起律胀,我...
- 正文 年R本政府宣布,位于F島的核電站勋眯,受9級特大地震影響婴梧,放射性物質發(fā)生泄漏。R本人自食惡果不足惜客蹋,卻給世界環(huán)境...
- 文/蒙蒙 一塞蹭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧讶坯,春花似錦番电、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至婉烟,卻和暖如春娩井,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背似袁。 一陣腳步聲響...
推薦閱讀更多精彩內容
- 親愛的讀者: 這是來自何以寬的第43封信卵慰。在之前的一段時間里面,有一陣子四大名著正在熱火朝天的拍攝成新版本佛呻,口碑是...