【學習筆記】lua中基於原型的繼承
阿新 • • 發佈:2019-01-24
print("-------------------") --基於原型的繼承 --理解為基類 Robort = {id = 001, name = "Li Lei"} function Robort:getId() return self.id end function Robort:setId( id ) self.id = id end function Robort:getName() return self.name end function Robort:setName( name ) self.name = name end --用於派生子類的成員函式 function Robort:New( extension ) local subRobort = setmetatable( extension or {}, self ) self.__index = self return subRobort end --基類方法建立例項 robort = Robort:New() print("robort:id-", robort:getId()) print("robort:name-", robort:getName()) print("-------------------") --FootRobort繼承自Robort類,並擁有自己的屬性和方法 FootRobort = Robort:New({ position = "here" }) function FootRobort:getPosition() return self.position end function FootRobort:setPosition( position ) self.position = position end --使用子類建立子類的例項 footRobort = FootRobort:New() print("footRobort:id-", footRobort:getId()) print("footRobort:name-", footRobort:getName()) print("footRobort:position-", footRobort:getPosition()) print("---------測試:修改子類例項的成員資料,證明父類的例項的成員資料是不會受到影響的----------") footRobort:setName("Han Meimei") print("footRobort:Name-"..footRobort:getName()) print("robort:Name-"..robort:getName()) print("-------------------")
【結果】