Lua 物件導向

2021-10-07 11:37:19 字數 1720 閱讀 3744

我們知道,物件由屬性和方法組成。lua中最基本的結構是table,所以需要用table來描述物件的屬性。

lua中的function可以用來表示方法。那麼lua中的類可以通過table + function模擬出來。

至於繼承,可以通過metetable模擬出來(不推薦用,只模擬最基本的物件大部分夠用了)。

lua中的表不僅在某種意義上是一種物件。

-- meta class

shape =

--基礎類方法new

function shape:new()

local o = {}

setmetatable(o,self)

self.__index = self

return o

end--基礎類方法printarea

function shape:printarea()

print("面積為 ",self.area)

end--建立物件

myshape = shape:new()

--呼叫物件方法

myshape:printarea()

--派生類正方形

square = shape:new()

--派生類正方形的new

function square:new(side)

o = shape:new()

setmetatable(o,self)

self.__index = self

self.side = side

self.area = side * side

return o

end--派生類正方形printarea

--[[

function square:printarea()

print("正方形面積為 ",self.area)

end]]--

--建立正方形物件

mysquare = square:new(10)

mysquare:printarea()

--派生類矩形

rectangle = shape:new()

--派生類矩形 方法new

function rectangle:new(length,width)

o = shape:new()

setmetatable(o,self)

self.__index = self

self.length = length

self.width = width

self.area = length * width

return o

end--派生類矩形 printarea,覆蓋基類的方法

function rectangle:printarea()

print("矩形面積為 ",self.length .. " * " .. self.width .. " = " .. self.area)

end--建立物件

myrectangle = rectangle:new(20,40)

myrectangle:printarea()

執行結果:

[root@izbp13pwlxqwiu1xxb6szsz test]# lua testoopshape.lua 

面積為 0

面積為 100

矩形面積為 20 * 40 = 800

lua物件導向

直接貼 參考的也是別人的,只不過其中幾點,增加一點自己的理解 local baseclass print baseclass是 tostring baseclass 定義index屬性,指向本身 baseclass.index baseclass 定義建構函式 function baseclass ...

Lua 物件導向

記錄學習過程 建立日期 2019 04 14 物件由屬性和方法組成。lua中最基本的結構是table,所以需要用table來描述物件的屬性。lua 中的 function 可以用來表示方法。那麼lua中的類可以通過 table function 模擬出來。乙個簡單的物件導向例子 屬性 person ...

Lua 物件導向

物件導向 組成 成員變數 成員函式 要求 每個物件,由類生成,有自己的成員變數 使用共同的成員函式 lua構造物件導向 原理用table表示成員變數 用function表示成員函式 用metatable關聯物件和類 實現1 空類 2 class 34 指向自己 5 class.index class...