Cocos2d-x 指令碼語言Lua中的物件導向

來源:互聯網
上載者:User

標籤:lua   cocos2d-x   

Cocos2d-x 指令碼語言Lua中的物件導向

物件導向不是針對某一門語言,而是一種思想,在面向過程的語言也可以使用物件導向的思想來進行編程。在Lua中,並沒有物件導向的概念存在,沒有類的定義和子類的定義,但同樣在Lua中可以利用物件導向的思想來實現物件導向的類繼承。
一、複製表的方式物件導向
--Lua中的物件導向--[[  複製表方式物件導向  參數為一張表,通過遍曆這張表取值,賦給一張空表,最後返回建立的表,來達到複製表]]function clone(tab)local ins = {}for key, var in pairs(tab) doins[key] = varendreturn insend--[[  複製表  第一參數是目標表,第二個參數是需要複製的表  通過遍曆tab來取值將它賦值到目標表中]]function copy(dist,tab)for key, var in pairs(tab) dodist[key] = varendend-- 定義一張空表,相當於一個類People ={}--function People.sayHi()--print("People say hi")--end-- 定義類中的方法sayHi,傳入一個self參數People.sayHi = function (self)print("People say hi:"..self.name)end-- 定義一個new方法,傳進一個name參數,通過複製People這張表來產生一個對象-- 相當於類當中的一個構造方法People.new = function (name)local self = clone(People)self.name = namereturn selfend--local p = clone(People)--p.sayHi()--產生一個新的對象local p = People.new("ZhangSan")--p.sayHi(p)--p:sayHi()--定義一張空表,也代表一個類Man = {}--Man中的構造方法,實現Lua中類的繼承Man.new = function (name)local self = People.new(name)--附加Man中所有的索引值對到People中的執行個體中去copy(self,Man)return selfendMan.sayHello = function ()print("Man say hello")end--重寫父類People中的sayHi方法Man.sayHi = function (self)print("Man sayHi "..self.name)end--建立Man的一個執行個體local m = Man.new("Lisi")m:sayHi()

以上代碼已經有詳細的注釋,讀者需要仔細閱讀這裡所給出的例子。
二、使用函數閉包的形式實現物件導向
--以函數閉包的形式實現物件導向--定義一個方法,函數閉包實現一個類的概念function People(name)local self = {}  --初始化方法,私人的local function init()self.name = nameend  self.sayHi = function ()print("Hello "..self.name)end  --調用初始化init()return selfend--執行個體化一個對象local p = People("ZhangSan")p:sayHi()--函數閉包的形式實作類別繼承function Man(name)local self = People(name)--local function init()----endself.sayHello = function ()print("Hi "..self.name)endreturn selfendlocal m = Man("Lisi")--m:sayHello()m:sayHi()

以上兩種方式均可實現物件導向,目測第二種方法更為簡潔一些,具體使用按照個人的喜好來做。








聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.