lua面向?qū)ο髮崿F(xiàn)的(記)

Lua中實現(xiàn)面向?qū)ο笥玫氖窃淼臋C制梗肝,元表與表是不同的個體,創(chuàng)建table時铺董,不會自動創(chuàng)建元表巫击。不過任何的表都可以有元表。
setmetatable(table1,table2):table2會做為table1的元表精续,同時有一個返回值table1.
__index方法坝锰,這個是元表中的元方法,它有回溯的功能重付,可以查找table中的屬性顷级,找不到相關(guān)屬性會返回nil.找到就會返回相應(yīng)的值。
__index的值可以是一個方法确垫,也可以是一個表弓颈,表又可能具有表有的特性帽芽。
寫下實現(xiàn)面向?qū)ο蟮乃悸罚?br> 首先是類的特點节腐,繼承坐漏。
我們可以先定義一個父類Parent
Parent = {
x = 10,
y = 20
}
function Parent( t )
{
local t = t or {}
self.__index = self
setmetatable( t, self )
return tend

}
Parent有兩個屬性围段,new方法是實例出一個對象密幔,這個對象同時也是個類恃慧,為什么呢周荐?我們分析一下:
1.把元方法指向自己
self.__index = self
2.設(shè)置元表也是自身
setmetatable( t, self )
3.最后返回這個對象
return t
我們可以先試驗證一下
Child = Parent:new()
print(Child.x)
--10
我們得到一個對象Child城丧,Child訪問變量x,在自身找不到變量宛篇,Child就會去元表里查找有沒有值计福,找到就會去找元方法的引用跌捆,此時到達(dá)Parent,Parent里有x,就返回x的值象颖,但是Child里是沒有x,系統(tǒng)就會構(gòu)造一個變量來接收Parent的x,這樣Child自身雖然沒有x這個變量佩厚,但是他還是能通過元表與元方法得到Parent的x值,這不正是繼承了嗎说订?
同時抄瓦,Child也是一個類,因為在new的時候陶冷,Child也返回了一個指向身的原型钙姊,所以Child也有Parent的功能,所以我們可以這樣訪問:
Child2 = Child2.new()
print(Child2.x)
--10
這樣我們就能實現(xiàn)一條長長的繼承鏈
我們還可以在子類覆蓋父類的方法與成員變量埂伦,也就是重載煞额,這個其實很簡單了,我們已經(jīng)實現(xiàn)繼承就好辦了直接上代碼:
Child2 = Child2.new()
self.x = 20
print(Child2.x)
--20
直接更改賦值就行沾谜。
Lua的靈活與強大難以致信膊毁,對Lua的學(xué)習(xí)還要加油!基跑!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末婚温,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涩僻,更是在濱河造成了極大的恐慌缭召,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逆日,死亡現(xiàn)場離奇詭異嵌巷,居然都是意外死亡,警方通過查閱死者的電腦和手機室抽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門搪哪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坪圾,你說我怎么就攤上這事晓折』箅” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵漓概,是天一觀的道長漾月。 經(jīng)常有香客問我,道長胃珍,這世上最難降的妖魔是什么梁肿? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮觅彰,結(jié)果婚禮上吩蔑,老公的妹妹穿的比我還像新娘。我一直安慰自己填抬,他們只是感情好烛芬,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著飒责,像睡著了一般赘娄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宏蛉,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天擅憔,我揣著相機與錄音,去河邊找鬼檐晕。 笑死,一個胖子當(dāng)著我的面吹牛蚌讼,可吹牛的內(nèi)容都是我干的辟灰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼篡石,長吁一口氣:“原來是場噩夢啊……” “哼芥喇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凰萨,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤继控,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胖眷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體武通,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年珊搀,在試婚紗的時候發(fā)現(xiàn)自己被綠了冶忱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡境析,死狀恐怖囚枪,靈堂內(nèi)的尸體忽然破棺而出派诬,到底是詐尸還是另有隱情,我是刑警寧澤链沼,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布默赂,位于F島的核電站,受9級特大地震影響括勺,放射性物質(zhì)發(fā)生泄漏缆八。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一朝刊、第九天 我趴在偏房一處隱蔽的房頂上張望耀里。 院中可真熱鬧,春花似錦拾氓、人聲如沸冯挎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽房官。三九已至,卻和暖如春续滋,著一層夾襖步出監(jiān)牢的瞬間翰守,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工疲酌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蜡峰,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓朗恳,卻偏偏與公主長得像湿颅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粥诫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理油航,服務(wù)發(fā)現(xiàn),斷路器怀浆,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程谊囚,因...
    小菜c閱讀 6,365評論 0 17
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法执赡,內(nèi)部類的語法镰踏,繼承相關(guān)的語法,異常的語法沙合,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉余境,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,686評論 0 9
  • 乘了22小時的火車,終于在16號下午四點二十八分到大青島站。到達(dá)時芳来,青島是陰天含末,空氣很濕潤,感覺很涼爽即舌,身體也很潮...
    阿盟果果閱讀 243評論 0 0