Lua--继承与多态(实例)

Lua–继承与多态

交通工具类:Vehicle(速度 /通过里程数求时间) --父类
  • 鸣笛方法
  • 汽车类:Car --子类
  • 卡车类:Truck --子类

1:创建父类 :Vehicle交通工具类

local Vehicle={}
1.1父类构造
function  Vehicle:new(speed)
local o={}
o.speed=speed or 0

setmetatable(o,self)
self.__index=self

return o

end
1.2:父类方法:speak
function Vehicle:speak()
print("speak")
end
1.3:父类方法:run
function Vehicle:run(miles)
return miles /self.speed
end

2:创建子类:Car汽车类

local Car=Vehicle:new()   ---Car类名
2.1:给Car新增加方法
function Car:ZaiRen()
print("ZaiRen")
end
2.2:重写父类speak函数
function Car:speak()
print("di di di")
end
2.3:创建car的对象
local car= Car:new(100)   ---car的元表是Car
print(car:run(200)) --调用父类的方法
car:ZaiRen() --调用自身Car的方法
car:speak()

-- local car2= Car:new(100)   ---car的元表是Car
-- print(car2:run(300)) --调用父类的方法
-- car2:ZaiRen() --调用自身Car的方法

3:创建子类:Truck卡车类

local Truck=Vehicle:new()
3.1重写父类
function Truck:speak()
print("do do do")
end
3.2 :创建Truck对象
local truck=Truck:new(100)
truck:speak()
作为文件引用对象返回,方便其他文件使用
return Car

你可能感兴趣的:(Lua)