Lua 繼承與多型(例項)

2021-10-07 08:10:46 字數 1277 閱讀 7568

交通工具類:vehicle(速度 /通過里程數求時間) --父類

local vehicle={}
1.1父類構造
function  vehicle:new(speed)

local o={}

o.speed=speed or 0

setmetatable(o,self)

self.__index=self

return o

end

1.2:父類方法:speak
function vehicle:speak()

print("speak")

end

1.3:父類方法:run
function vehicle:run(miles)

return miles /self.speed

end

local car=vehicle:new()   ---car類名
2.1:給car新增加方法
function car:zairen()

print("zairen")

end

2.2:重寫父類speak函式
function car:speak()

print("di di di")

end

2.3:建立car的物件
local car= car:new(100)   ---car的元表是car

print(car:run(200)) --呼叫父類的方法

car:zairen() --呼叫自身car的方法

car:speak()

-- local car2= car:new(100) ---car的元表是car

-- print(car2:run(300)) --呼叫父類的方法

-- car2:zairen() --呼叫自身car的方法

local truck=vehicle:new()
3.1重寫父類
function truck:speak()

print("do do do")

end

3.2 :建立truck物件
local truck=truck:new(100)

truck:speak()

作為檔案引用物件返回,方便其他檔案使用
return car

lua實現偽多型繼承

通過lua的設定元表 index欄位,巧妙的運用在無法索引到物件的key時會呼叫 index的機制,實現了偽多型 繼承。如下 inheritance classtotaltable function inheritance class father local classvo classvo.con...

繼承與多型

繼承 繼承是c 語言支援 重用及多型的重要機制。通過繼承,可以繼承可以在現有類的基礎上派生出新類,新類將共享現有類的成員,並且還可以新增新的成員。c 語言中,重用主要表現為可以使用現成的類 如.net框架類庫中的類 來定義新類,主要方法有組合和繼承兩種 繼承是物件導向程式設計支援 重用的另乙個重要機...

繼承與多型

虛函式只要在基類裡定義,所以繼承類都不用重新定義為虛函式,自動成為虛函式。虛函式必須有實現,普通成員函式在沒有呼叫時可以沒有實現 定義 class animal 只需要在基類定義函式為虛,子類中不需要新增virtual.smile函式在沒有呼叫時可以不實現。當有函式為虛函式時,析構函式應定義為vir...