Lua 認識一下Lua的物件導向和繼承

2021-08-30 11:37:20 字數 1570 閱讀 5928

lua語言核心在table,通過將乙個table作為另乙個table的metatable元表,實現繼承;

通過乙個例子理解lua的物件導向和繼承;

---------------person base class  

person={}

function person:new(o,age,name) --person的建構函式

o=o or {}

setmetatable(o,self)

self.__index=self

self.age=age or 0

self.name=name or ""

return o

endfunction person:sayhello() --person的成員函式

print("hello,i am "..self.name,"i am"..self.age.."years old.")

endp=person:new(nil,18,"tom") --建立乙個person物件p

p:sayhello()

--------------woman類 繼承自person

woman=person:new() --這句woman是person的建構函式的返回值,person是woman的原型

function woman:new(o,age,name) --woman的建構函式

o=o or person:new(o,age,name)

setmetatable(o,self)

self.__index=self

self.gender="woman" --只改變乙個gender欄位

return o

endfunction woman:sayhello() --重寫成員函式

person:sayhello()

print("i am a "..self.gender)

endw=woman:new(nil,20,"sany")

w:sayhello()

---------------man 繼承自person --man與woman一樣,繼承自person

man=person:new()

function man:new(o,age,name)

o=o or person:new(o,age,name)

setmetatable(o,self)

self.__index=self

self.gender="man"

return o

endfunction man:sayhello()

person:sayhello()

print("i am a "..self.gender)

endm=man:new(nil,23,"yua")

m:sayhello()

認識一下 RabbitMQ

分布式系統中,如何在各個應用之間高效的進行通訊,是系統設計中的乙個關鍵。使用訊息 message broker 是乙個優雅的解決方案。rabbitmq就是乙個被廣泛應用的訊息 遵循amqp協議。接下來我們就了解一下 石頭 broker是經紀人的意思,促成賣方 買方的交易,例如房產經紀人。訊息模型中,...

DevOps 認識一下

大家都在說devops develop operation 大概知道就是開發和運維溝通交流,一條線,然後使產品能夠順利的 短時間內上線 維穩什麼的。今天特意看了下 dockone裡面的一篇文章,再鞏固下自己的認識 開發運維一體化 總結一下 自動化是為了服務devops,並不是一定要自動化。目的是 提...

認識一下偽 吧

今天我希望在畫家的路上走走,驚嘆於css的神奇之餘,發現我對類似 的東西好陌生,於是乎,讓我們來認識一下它吧。first line 用於向文字的首行設定特殊樣式 first letter 用於向文字的首字母設定特殊樣式 font color background margin padding bor...