--面向對象
--lua中類可以通過table【屬性】+function【方法】+metetable【繼承,不推薦用,只模擬最基本的對象大部分時間夠用了】模擬實現
--基類
Shape = {area = 0}
--基類方法 new
function Shape:new(o,side)
o=o or {}
setmetatable(o,self)
self.__index = self
side = side or 0
self.area = side*side
return o
end
--基類方法 printArea
function Shape:printArea()
print("Area== ",self.area)
end
--創建對象
Shape1 = Shape:new(nil,5)
--屬性訪問,使用點號
print("Area=",Shape1.area)
--函數調用,使用冒號
Shape1:printArea()
print()
--繼承:指一個對象直接使用另一對象的屬性和方法。可用於擴展基礎類的屬性和方法。
--繼承實例1-正方形
Square = Shape:new()
--派生類方法new
function Square:new(o,side)
o= o or Shape:new(o,side)
setmetatable(o,self)
self.__index = self
return o
end
--派生類方法 printArea重寫
function Square:printArea()
print("Square Area =",self.area)
end
Square1 = Square:new(nil,6)
Square1:printArea()
print()
--繼承實例2-矩形
Rectangle = Shape:new()
--派生方法 new
function Rectangle:new(o,width,height)
o = o or Shape:new(o)
setmetatable(o,self)
self.__index = self
self.area = width * height
return o
end
--派生類方法printArea()重寫
function Rectangle:printArea()
print("Rectangle Area =",self.area)
end
Rectangle1 = Rectangle:new(nil,4,7)
Rectangle1:printArea()
lua-面向對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.