-- 使用表实现面向对象里类的定义
Person = {name="",age=0}
function Person:eat( food )
print(self.name.." is eating "..food)
end
-- 创建类的构造方法
function Person:new(name,age)
local t = {name=name,age=age}
setmetatable(t,{__index=self})
return t
end

-- 类的实例化和类方法的调用
p1 = Person:new("navy",18)
p1:eat("apple")
p2 = Person:new("summer",19)
p2:eat("pear")

-- 类的继承
Student = Person:new()
function Student:read()
print(self.name.." is reading a book")
end
s = Student:new("summernavy",18)
s:read()


Teacher = Person:new()
function Teacher:teach(course)
print(self.name.." is teaching "..course)
end
t = Teacher:new("navysummer",28)
t:teach("English")