lua物件導向(繼承及多繼承)

2021-08-20 17:14:19 字數 1408 閱讀 1888

╮(╯_╰)╭還是個人感覺,lua輕量簡潔的語法,正式在於表這種類似於物件的使用,表:

t = ------不使用

funtion t.add(self,x)

self.a = self.a + x

結束t.add(5)

t = -------使用

函式t:add(x)

self.a = self.a + x

結束t:新增(5)

帳戶= - ---父類

函式account:new(o)------把account設定為o的元表,相當於父類.o為子類

o = o或{} - 不傳引數,則建立乙個空表

setmetatable(個體,o)

自.__指數=自

返回o結束

功能帳戶:存款(v)

self.balance = self.balance + v

結束功能帳戶:撤回(v)

如果v> self.balance,那麼錯誤「----」結束

self.banlance = self.balance-v

結束specialaccount = account:new() - 乙個子類

s = specialaccount:新的

s.deposit(100)----這時會查詢s的父類specialaccount,沒找到,再查詢account,找到deposit實現

本地函式搜尋(k,list)-----列表中存放所有的父類

對於i = 1,#列表做

本地v =列表[i] [k]

如果v然後返回v結束 - 假設子類沒有成員k,那就要到每個父類中查詢k是否為nil,不為nil就返回父類這個k

結束結束

函式createclass(...。)

本地c = {} - 新類

本地父=

setmetatable(c,)

c .__ index = c - 將c作為其實例的元表

函式c:new(o) - 為這個新類定義乙個新的建構函式

o = o或{}

setmetatable(o,c)

返回o結束

返回c - 返回新類

結束假設有兩個類,乙個是之前的帳戶,乙個是名稱類,他有兩個方法的setname,的getname:

命名= {}

函式名稱:getname()

返回self.name

結束函式name.setname()

self.name =正

結束現在建立乙個nameaccount類,同時從名稱和帳號派生,只需要呼叫createclass

nameaccount = createclass

賬戶= nameaccount:新

列印(帳戶:getname)---列印fcw

物件導向 多繼承

class master object def init self self.kongfu 古法煎餅果子配方 例項變數,屬性 def make cake self 例項方法,方法 print 古法 按照 s 製作了乙份煎餅果子.self.kongfu def dayandai self print ...

LUA物件導向程式設計(二)繼承

在lua中模擬類的繼承行為,可以通過setmetatable方法來實現。首先,我們就先實現乙個基類vehicle,然後再定義該基類的乙個子類bicycle,基類的定義與之前介紹的類的定義方法是一致的,如果你對此還不是很熟悉,可以先回顧一下 lua物件導向程式設計 一 類 基類vehicle的定義 類...

php物件導向多繼承實現

在php物件導向概念程式設計中,乙個子類只能繼承乙個父類,但是從php5.4後新增traits實現 復用機制變向達到多繼承。trait 為了減少單繼承語言的限制,使開發人員能夠自由地在不同層次結構內獨立的類中復用方法集。2 trait會覆蓋繼承的方法,當前類會覆蓋trait方法 class peop...