lua学习笔记---8.继承和多态

177 阅读1分钟

交通工具类

  • Vehicle(速度(speed) / 通过里程数求时间(run))
  • 鸣笛(多态)
local Vehicle = {}
function Vehicle:new(speed)
    local obj = {}
    obj.speed = speed or 20
    setmetatable(obj,self)
    self.__index = self
    return obj
end

function Vehicle:run(miles)
    return miles / self.speed
end

function Vehicle:speak()
    print("Vehicle:speak")
end
-- local vehicle = Vehicle:new(50)
-- print(vehicle:ZaiRen())

汽车类Car

-- 创建子类
local Car = Vehicle:new()   -- Car类名
-- 给Car新增方法
function Car:ZaiRen()
    print("ZaiRen")
end
function Car:speak()
    print("滴滴滴")
end

-- 创建Car的对象
local car = Car:new(100)    -- car的元表是Car
print(car:run(200))         -- 调用父类的方法
car:ZaiRen()                -- 调用自身Car的ZaiRen方法
car:speak()                 -- 调用自身Car的speak重写方法

卡车类Truck

local Truck = Vehicle:new()
function Truck:ZaiHuo()
    print("ZaiHuo")
end
function Truck:speak()
    print("哒哒哒")
end
local truck = Truck:new()
truck:ZaiHuo()
truck:speak()