Lua重点:面向对象 (封装、继承、多态)

Lua重点:面向对象

1,封装

--面向对象类基于table来实现
--面向对象的封装
Object={
   }
Object.id=1
function Object:Test()      --冒号 自动调用这个函数的对象(Object) 作为第一个参数传入的方法 
	print("id是"..self.id)  --相当于将Test作为Object的成员方法
end

function Object:new()
   local obj={
   }     		--建立一个用于返回的空表
   self.__index=self 		--子表中没有的属性去元表中寻找,即obj没有去Object寻找
   setmetatable(obj,self)	--将Object设置为obj的元表
   return obj    			--返回obj
end
local myObj=Object:new()    --myObj相当于obj,obj中没有的元素要去Object寻找
print(myObj.id)             --obj是空表,所以肯定去Object中寻找
             
local myObj2=Object:new()   --更改myObj2对象中的id
myObj2.id=0                 
print(myObj.id)             --myObj.id不会改变  --为什么myObj和myObj2是两个对象

你可能感兴趣的:(Lua程序设计,lua)