--父类
local Person =
{
name = "XX"
,
age = 0
,
PrintName = function(self)
print("PersonName : "..self.name)
end
,
new = function(self,name,age)
obj = {}
--创建并赋值实例的字段
obj.name = name
obj.age = age
setmetatable(obj , {__index = self})
return obj
end
,
PrintAge = function(self)
print(self.name.."age"..self.age);
end
}
--子类
local Student =
{
PrintName = function(self)
print("StudentName : "..self.name)
end
,
new = function(self,name,age)
obj = {}
setmetatable(obj , {__index = self})
--创建并赋值实例的字段
obj.name = name;
obj.age = age
return obj
end
}
setmetatable(Student , {__index = Person})
--Student.__newindex = Person
local zhangsan = Student:new("zhangsan",20)
local lisi = Person:new("lisi",25)
zhangsan:PrintName()
lisi:PrintName()
--用的是父类的方法,但使用的数据是zhangsan的name和age(用self传过去的),字段无法实现继承,需要每个实例都创建
zhangsan:PrintAge()
lisi:PrintAge()