local Vehicle = {} Vehicle.__index = Vehicle function Vehicle.new(name) return setmetatable({ name = name }, Vehicle) end function Vehicle:describe() print(self.name .. " is a vehicle.") end local Car = setmetatable({}, { __index = Vehicle }) Car.__index = Car function Car.new(name) return setmetatable(Vehicle.new(name), Car) end function Car:describe() print(self.name .. " is a car.") end Vehicle.new("Cart"):describe() Car.new("Beetle"):describe()