-- Homework 27, challenge -- solution. local Animal = {} Animal.__index = Animal function Animal.new(name) local self = setmetatable({}, Animal) self.name = name return self end function Animal:describe() print("I am " .. self.name .. ".") end local Dog = setmetatable({}, { __index = Animal }) Dog.__index = Dog function Dog.new(name) local self = Animal.new(name) return setmetatable(self, Dog) end function Dog:bark() print(self.name .. ": Woof!") end local Cat = setmetatable({}, { __index = Animal }) Cat.__index = Cat function Cat.new(name) local self = Animal.new(name) return setmetatable(self, Cat) end function Cat:meow() print(self.name .. ": Meow.") end local rex = Dog.new("Rex") local whiskers = Cat.new("Whiskers") rex:describe() whiskers:describe() rex:bark() whiskers:meow()