1. 程式人生 > >【學習筆記】lua中基於原型的繼承

【學習筆記】lua中基於原型的繼承

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("-------------------")

【結果】