-----------------------------基类----------------------------
Animal = {
runSpeed = 10,
NeedOXygen = true,
vertebral= "vertebral"
}
-----------------------------父类----------------------------
function Animal:new()
local o = {}
setmetatable(o,{__index = Animal})
return o
end
function Animal:PrintNeedOXygen()--父类的构造方法1
print("--------------父类方法1-------------")
print("NeedOXygen: ",self.NeedOXygen)
end
function Animal:PrintrunSpeed(runSpeed)
self.runSpeed = runSpeed
print("--------------父类方法2-------------")
print(string.format("RUN: %d",self.runSpeed))
end
function Animal:Printvertebral()
print("--------------父类方法3-------------")
print(string.format("vertebral: %s",self.vertebral))
end
obj = Animal:new()-------------父类的实例化1-------------
obj:PrintNeedOXygen()
obj:PrintrunSpeed(50)
obj:Printvertebral()
obj1 = Animal:new();-------------父类的实例化2-------------
obj1:PrintNeedOXygen()
obj1:PrintrunSpeed(30)
obj1:Printvertebral()
--------------------------子类------------------------------
Dog = Animal:new()------带参或不带参均可-------
function Dog:new()------重载父类构造函数-------
local o = {}
setmetatable(o,{__index = self})
return o
end
function Dog:Bark()----子类自有函数----
print("Barking")
end
obj3 = Dog:new()
obj3:Bark()
obj3:PrintrunSpeed(100)
obj1.Bark()
-------------------
--------------父类方法1-------------
NeedOXygen: true
--------------父类方法2-------------
RUN: 50
--------------父类方法3-------------
vertebral: vertebral
--------------父类方法1-------------
NeedOXygen: true
--------------父类方法2-------------
RUN: 30
--------------父类方法3-------------
vertebral: vertebral
------------子类自有函数------------
Barking
--------------父类方法2-------------
RUN: 100
D:\Lua\lua.exe: d:\LuaWorkShop\Hello-1.lua:56: attempt to call a nil value (field 'Bark')
stack traceback:
d:\LuaWorkShop\Hello-1.lua:56: in main chunk
[C]: in ?
(********上面这个报错说明父类不拥有子类方法,构造成功)