91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Lua 面向對象

發布時間:2020-07-03 15:57:23 來源:網絡 閱讀:497 作者:liam2199 欄目:開發技術

面向對象特征

  • 1) 封裝:指能夠把一個實體的信息、功能、響應都裝入一個單獨的對象中的特性。

  • 2) 繼承:繼承的方法允許在不改動原程序的基礎上對其進行擴充,這樣使得原功能得以保存,而新功能也得以擴展。這有利于減少重復編碼,提高軟件的開發效率。

  • 3) 多態:同一操作作用于不同的對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向基類的指針,來調用實現派生類中的方法。

  • 4)抽象:抽象(Abstraction)是簡化復雜的現實問題的途徑,它可以為具體問題找到最恰當的類定義,并且可以在最恰當的繼承級別解釋問題。


Lua 中面向對象

我們知道,對象由屬性和方法組成。LUA中最基本的結構是table,所以需要用table來描述對象的屬性。

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

至于繼承,可以通過metetable模擬出來(不推薦用,只模擬最基本的對象大部分時間夠用了)。


Lua中的表不僅在某種意義上是一種對象。像對象一樣,表也有狀態(成員變量);也有與對象的值獨立的本性,特別是擁有兩個不同值的對象(table)代表兩個不同的對象;一個對象在不同的時候也可以有不同的值,但他始終是一個對象;與對象類似,表的生命周期與其由什么創建、在哪創建沒有關系。對象有他們的成員函數,表也有。

創建對象是位類的實例分配內存的過程。每個類都有屬于自己的內存并共享公共數據。


訪問屬性

我們可以使用點號(.)來訪問類的屬性:

print(r.length)

訪問成員函數

我們可以使用冒號 : 來訪問類的成員函數:

r:printArea()

內存在對象初始化時分配。

Shape = {area = 0}

-- 基礎類方法new
function Shape:new(o, side)
	o = o or {}
	setmetatable(o, self)
	self.__index = self
	side = side or 0
	self.area = side * side
	return o
end

-- 基礎類方法 printArea
function Shape:printArea()
	print("面積為 : ",self.area)
end

--創建對象
myshape = Shape:new(nil,12)

myshape:printArea()

運行結果:

Lua 面向對象


繼承了一個簡單的類,來擴展派生類的方法,派生類中保留了繼承類的成員變量和方法:

 -- Meta class
Shape = {area = 0}
-- 基礎類方法 new
function Shape:new (o,side)
  o = o or {}
  setmetatable(o, self)
  self.__index = self
  side = side or 0
  self.area = side*side;
  return o
end
-- 基礎類方法 printArea
function Shape:printArea ()
  print("面積為       :",self.area)
end

-- 創建對象
myshape = Shape:new(nil,12)
myshape:printArea()

Square = Shape:new()
-- 派生類方法 new
function Square:new (o,side)
  o = o or Shape:new(o,side)
  setmetatable(o, self)
  self.__index = self
  return o
end

-- 派生類方法 printArea
function Square:printArea ()
  print("正方形面積為 : ",self.area)
end

-- 創建對象
mysquare = Square:new(nil,15)
mysquare:printArea()

Rectangle = Shape:new()
-- 派生類方法 new
function Rectangle:new (o,length,breadth)
  o = o or Shape:new(o)
  setmetatable(o, self)
  self.__index = self
  self.area = length * breadth
  return o
end

-- 派生類方法 printArea
function Rectangle:printArea ()
  print("矩形面積為   : ",self.area)
end

-- 創建對象
myrectangle = Rectangle:new(nil,18,22)
myrectangle:printArea()

運行結果:

Lua 面向對象

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宿迁市| 嘉峪关市| 延庆县| 安国市| 泌阳县| 嵊州市| 靖江市| 会东县| 酉阳| 新巴尔虎左旗| 潢川县| 平利县| 武安市| 九江县| 沅江市| 固始县| 凤阳县| 成武县| 长乐市| 冀州市| 织金县| 屯留县| 曲水县| 衡山县| 乌海市| 诸暨市| 罗田县| 甘肃省| 烟台市| 龙里县| 布尔津县| 大庆市| 晋宁县| 临城县| 上杭县| 云浮市| 沙洋县| 灵宝市| 临武县| 嵊泗县| 大城县|