调用父类构造函数

类 / 构造函数

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