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...