Lua物件導向程式設計之基礎結構table簡例

2022-09-20 12:18:08 字數 1495 閱讀 3806

物件導向程式設計

(object oriented programming是一種非常流行的計算機程式設計架構。

lua中最基本的結構是table,所以需要用table來描述物件的屬性。

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

簡例:-- czhenywww.cppcns.coma lua 物件導向

-- 對於乙個物件來說, 屬性 方法

--[[ 兩種定義函式的方式

person.eat = function()

print(person.name.."在寫lua"iaqqycyh)

endfunction person.eat()

print(person.name.."在寫lua")

end--]]

--作為原型

person =

function person:eat()

pr程式設計客棧int(self.name.."的年齡是"..self.age)

endfunction person:new(o) -- 若o是空的則返回false

local t = o or {}

--[[ 和下面設定結果一樣,只是兩種不同的方式

setmetatable

self.__index=self

--]]

setmetatable(t,) --設定元表

--呼叫乙個屬性的時候,如果t中不存在,就會在__index所指的table中查詢

return t

end-- 類似於通過建構函式建立物件

person1 = person:new()

person2 = person:new()

print(person1.name)

print(person1.weight)

print(person2.name)

person1.name = "czy" --不會改變元表,新增到person.name

person1:eat()

person2:eat()

--繼承

student = person:new()

student.grade = 1

stu1 = student:new()

stu1:eat()

priniaqqycyht(stu1.grade)

冒號和點定義函式的區別:

-- 使用冒號和點來的定義函式,建議用什麼定義函式,用什麼呼叫

person =

function person:eat()

print(self.name.."的年齡是"..self.age)

endperson.eat(person)

a = person

--冒號呼叫self自動賦值

a:eat()

--通過點來呼叫的時候,self不會自動賦值,必須通過引數傳遞

a.eat(a)

總結

lua 物件導向程式設計

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

Lua核心程式設計之基礎

由於本人這個學期選了一門選修課 cocos2d x移動遊戲開發 所以想整理一下筆記了。不保證部落格的全面性,我只記一些我認為需要記錄的,最好的學習方式還是看書。學習資料 cocos2d x之lua核心程式設計 極客學院 老師的ppt 學習環境 mac os x,sublime text,cocos2...

物件導向程式設計之術語

術語 含義屬性 一小段資訊,例如顏色 高度或重量,描述物件的乙個特性 字段物件內部的指定值 操作屬於物件的一段 方法操作的同義詞 訊息從乙個物件傳送到另乙個物件的請求 呼叫執行操作,以響應訊息 執行呼叫的同義詞 關聯兩個物件之間的直接或間接連線 聚合強關聯,隱含著某種部分 一體層次結構 復合強聚合,...