lua語言實現物件導向程式設計

2021-07-03 20:59:01 字數 1661 閱讀 2730

lua是乙個非常輕巧的指令碼語言。這裡通過幾個步驟,說明lua如何實現類的功能。

1、通過clone函式複製表

function clone( tab_ )

local tab = {}

for k,v in pairs(tab) do

tab[k] = v

endreturn tab

end

2、定義類的成員函式new,用於例項化物件

myclass = {}

myclass.new = function ( )

local self = clone(myclass)

return self

end

3、繼承

通過複製表的方式,實現繼承

function copy(dist,tab) --把tab表裡的資料複製給dist

for k,v in pairs(tab) do

dist[k] = v

endendbase = {} --基類

base.new = function ( )

local self = clone(myclass)

return self

endinheritance = {} --繼承自base類

inheritance = function()

local self = base.new()

copy(self,inheritance)

return self

end

4、函式重寫

函式重寫非常簡單,直接賦值給子類乙個新的函式就行

inheritance.fun = function ( ... )

-- body

end

5、私有成員

通過函式閉包的方法,可以實現類的成員私有化

function people( name )

local self = {}

local function init() --閉包實現私有成員函式

self.name = name

endself.sayhi = function()

print("hi "..self.name)

endinit() --相當於建構函式

return self

endfunction man(name) --繼承自people的類

local self = {}

local function init()

self = people(name)

endself.sayhello = function()

print("hello "..self.name)

endinit()

return self

endlocal m = man("qj")

m:sayhello() --"hello qj"

m:sayhi() --"hi qj" 繼承基類的方法

6、總結

lua可以通過複製表和閉包的方法來實現類的特性,使用複製表效率更高,使用閉包給符合使用習慣。

C語言 實現 物件導向程式設計 OOC

結構體,函式指標,聚合組合等知識。inside the c object model object oriented programming with ansi c 這裡是csdn上前幾章的中文翻譯 wiki上有全部的中英文互譯 不過建議對照英文原著閱讀 這裡有object oriented pro...

lua 物件導向程式設計

物件的實現 在lua中table就是一種物件 1.有自己的狀態 2.有自己的唯一標識self 3.有自己的生命週期 使用table可以自己實現物件導向的幾乎所有特性 把函式定義在table中,並使用t.func的形式訪問,如同方法呼叫 account function account.withdra...

用C語言實現物件導向程式設計 一

許多朋友都知道用c語言是可以實現物件導向程式設計的,但是具體到操作的細節部分就有些茫然不知所措了。為此作者在研究lw oopc 的基礎上,對其進行充分的簡化,只保留最基本的物件導向功能,形成自己的oosm巨集包,其實這些東西已經夠用了,以下是oosm巨集包的源 object oriented sup...