local Man = {}
Man.__index = Man
function Man.new(name)
return setmetatable({name = name}, Man)
end
local Employee = {}
Employee.__index = Employee
setmetatable(Employee, {__index = Man})
function Employee.new(name, position)
-- The parent constructor builds the object
local object = Man.new(name)
object.position = position
-- Then the metatable is changed to Employee
return setmetatable(object, Employee)
end
local employee = Employee.new("Max", "booker")
-- employee.name = Max
-- employee.position = booker
local is_employee =
getmetatable(employee) == Employee
-- is_employee = true
print("employee.name = " .. employee.name)
print("employee.position = "
.. employee.position)
print("is_employee = " .. tostring(is_employee))