国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 開發 > 綜合 > 正文

淺談Lua的面向對象特性

2024-07-21 23:04:53
字體:
來源:轉載
供稿:網友

 面向對象的特性

  •     類: 類是可擴展的模板用來創建對象,提供狀態的初始值(成員變量)和行為的實現。
  •     對象: 它是類的實例并具有分配給自己獨立的內存。
  •     繼承: 它是由變量和類的函數被其他類繼承的概念。
  •     封裝: 它是將數據和函數相結合的一類內的方法。數據可以在類的外部與函數的幫助下進行訪問。它也被稱為數據抽象。

Lua的OOP

在Lua中實現面向對象與表和Lua的第一類函數。通過將函數和相關數據插入表中形成一個對象。繼承可以在metatables的幫助下來實現,提供了一個查找機制不存在的函數(方法)和在父對象字段。

在Lua表有這樣的狀態和標識對象,它是獨立于值的特性。兩個對象(表),具有相同的值但在不同的對象,而一個對象可以具有在不同的值,但它始終是相同的對象。就像對象表中有一個生命周期,獨立創建或被創建。
一個真實世界的例子

面向對象的概念是廣泛的,但要明白和獲取最大利益。

讓我們考慮一個簡單的數學例子。我們經常會遇到,我們工作在不同的形狀像圓形,長方形和正方形的情況。

形狀可以有一個共同的屬性區。因此,我們可以從與共同屬性區域的基礎對象形狀擴展的其它形狀。每個形狀都可以有其自己的性質和功能類似的矩形可以有屬性的長度,寬度,面積作為其屬性,printArea中和calculateArea作為它的函數。
創建一個簡單的類

一個簡單的類實現矩形三個屬性面積,長度和寬度如下所示。它也有一個printArea中功能打印所計算的面積。

 

復制代碼 代碼如下:
-- Meta class
Rectangle = {area = 0, length = 0, breadth = 0}

 

-- Derived class method new
function Rectangle:new (o,length,breadth)
  o = o or {}
  setmetatable(o, self)
  self.__index = self
  self.length = length or 0
  self.breadth = breadth or 0
  self.area = length*breadth;
  return o
end

-- Derived class method printArea
function Rectangle:printArea ()
  print("The area of Rectangle is ",self.area)
end

 

創建對象

創建對象是類的實例分配存儲器的過程。每個對象具有它自己的存儲器和共享公用類數據。

 

復制代碼 代碼如下:
r = Rectangle:new(nil,10,20)

 

訪問屬性

在類中用點 . 操作符,如下圖所示,可以訪問屬性

 

復制代碼 代碼如下:
print(r.length)

 

訪問成員函數

使用冒號運算符,如下圖所示,可以訪問對象成員函數。

 

復制代碼 代碼如下:
r:printArea()

 

存儲器被分配和初始值被設定。初始化過程可以比在其它面向對象的語言構造。它只是一項功能設定值,如上圖所示。
完整例子

讓我們來看看使用面向對象的Lua中一個完整的例子。

 

復制代碼 代碼如下:
-- Meta class
Shape = {area = 0}

 

-- Base class method 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

-- Base class method printArea
function Shape:printArea ()
  print("The area is ",self.area)
end

-- Creating an object
myshape = Shape:new(nil,10)

myshape:printArea()

 

當運行上面的程序,會得到如下的輸出。

 

復制代碼 代碼如下:
The area is  100

 

Lua的繼承

繼承是擴展形狀簡單的基本對象,以矩形,正方形等的處理。它通常用于在真實世界中的共享和擴展的基本性質和功能。

讓我們看一個簡單的類擴展。有一個類,如下圖所示。

 

復制代碼 代碼如下:
-- Meta class
Shape = {area = 0}
-- Base class method 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
-- Base class method printArea
function Shape:printArea ()
  print("The area is ",self.area)
end

 

我們可以擴展的形狀為正方形類如下所示。

 

復制代碼 代碼如下:
Square = Shape:new()
-- Derived class method new
function Square:new (o,side)
  o = o or Shape:new(o,side)
  setmetatable(o, self)
  self.__index = self
  return o
end

 

重載基礎函數

我們可以重載基類函數使用基類中的函數,而不是派生類它自己再實現,如下圖所示

 

復制代碼 代碼如下:
-- Derived class method printArea
function Square:printArea ()
  print("The area of square is ",self.area)
end

 

繼承完整的例子

Lua中我們可以擴展的簡單類實現,如上圖所示metatables另一個新的方法。所有的成員變量和基類的函數被保留在派生類。

 

復制代碼 代碼如下:
 -- Meta class
Shape = {area = 0}
-- Base class method 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
-- Base class method printArea
function Shape:printArea ()
  print("The area is ",self.area)
end

 

-- Creating an object
myshape = Shape:new(nil,10)
myshape:printArea()

Square = Shape:new()
-- Derived class method new
function Square:new (o,side)
  o = o or Shape:new(o,side)
  setmetatable(o, self)
  self.__index = self
  return o
end

-- Derived class method printArea
function Square:printArea ()
  print("The area of square is ",self.area)
end

-- Creating an object
mysquare = Square:new(nil,10)
mysquare:printArea()

Rectangle = Shape:new()
-- Derived class method 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

-- Derived class method printArea
function Rectangle:printArea ()
  print("The area of Rectangle is ",self.area)
end

-- Creating an object
myrectangle = Rectangle:new(nil,10,20)
myrectangle:printArea()

 

當我們運行上面的程序,會得到下面的輸出。

 

復制代碼 代碼如下:
The area is  100
The area of square is  100
The area of Rectangle is  200

 

在上面的例子中,我們創建了兩個派生類Rectangle和Square從基類Square。因此能夠在此改變基類的功能的派生類。在本實現例子中,派生類會取代函數printArea。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
牛牛在线精品视频| 高清在线观看av| 亚洲欧美中文字幕在线观看| 九九热在线观看视频| 亚洲精品男人| 在线播放黄色网址| 在线免费国产| 亚洲欧美一区二区三区在线播放| 国产不卡视频| 在线视频中文字幕久| 国产一二三区在线| 最新国产在线| 国产精品186在线观看在线播放 | 久久国产综合视频| 国产免费人人看| 中文字幕色视频| 天天操夜夜操天天射| 91福利在线免费| 国产精品视频一区麻豆| 97视频在线观看网站| 亚洲欧美一区二区三区在线播放| 九色在线网站| 国产午夜三区视频在线| 精品视频麻豆入口| 久久五月精品| 精品国产高清自在线一区二区三区| 一本大道香蕉8中文在线视频| www.成人.com| 国产经典自拍视频在线观看| 在线黄色av| 成人无遮挡免费网站视频在线观看| 青草在线视频在线观看| 国产在线视精品麻豆| 91极品在线| 久久国产热视频| 国产二区视频在线观看| 久久五月精品| 在线免费黄色毛片| 国产一级片网站| 青娱乐在线视频观看| 国产福利在线播放| www免费在线观看视频| 国产天堂素人系列在线视频| 亚洲天堂二区| 在线伊人免费视频| 国产精品毛片一区二区三区四区| 91桃色在线| 国产免费网址| 国产在线一二三| 热99在线观看| 亚洲欧美日韩一区成人| 国产成人亚洲精品播放器下载| 九九热在线播放| 四虎成人精品在永久免费| 2019中文字幕视频| 国产网红在线| 国产无套粉嫩白浆在线2022年| 日本视频在线| 亚洲综合色视频在线观看 | 国产剧情av在线| av手机免费在线观看| 在线看a视频| 中文在线视频| 先锋影音av中文字幕| 精品a在线观看| 在线伊人免费视频| 亚洲综合在线不卡| 免费影视观看网站入口| 亚洲男人的天堂成人| 亚洲精品自拍区在线观看| 中文字幕av高清| 在线免费观看黄色av| 国产第一页在线| 中文岛国精品亚洲一区| 免费观看v片在线观看| 久草在线视频网| 91九色在线看| 丁香婷婷在线| 午夜在线观看91| 在线伊人免费视频| 国产女王在线**视频 | 中文字幕有码在线视频| 精品一区二区91| 青青草视频免费在线观看| 国产色在线观看| 麻豆精品免费视频入口| 尤物在线网址| 国产资源在线看| 国产特级淫片免费看| 在线免费看黄av| 欧美日韩久久中文字幕| 在线伊人免费视频| 天天噜天天色| 国产美女一区视频| 国产啊啊啊视频在线观看| 在线国产1区| 国产黄在线观看免费观看不卡| 六月天色婷婷| 久久精品国产麻豆| 国产丝袜精品丝袜| jlzzjlzz欧美大全| 国产一区二区三区不卡免费观看| 国产高清av| 男人操女人免费网站| 亚洲综合在线免费| 国产裸舞福利在线视频合集| 国产激情在线| 日本卡一卡2卡3卡4精品卡网站| 丁香花高清视频完整版在线观看| 国产高清一区二区三区视频| 国产区高清在线| 天堂网中文在线| 天堂资源中文在线| 国产黄色在线网站| 九九热在线观看视频| 精品日韩av| 中文字幕视频在线| 国产麻豆精品高清在线播放| 99中文字幕一区| 国产美女视频一区二区三区 | 99高清免费国产自产拍| 一级二级三级在线观看| a视频免费看| 国产激情三区| 国产卡二和卡三的视频| 国产丝袜视频在线播放| 免费a在线看| 四虎精品视频| 国产叼嘿网站免费观看不用充会员| 美女av在线播放| gogo在线观看| av黄色在线观看| 国产黄色在线观看| 国产无套粉嫩白浆在线2022年 | 在线观看电影av| 久热免费视频| 天天草天天干| 伊人网站在线| 国产香蕉尹人视频在线| 国产一级免费| 国产福利小视频在线观看| 国产天堂在线播放视频| 免费男女羞羞的视频网站中文字幕| av在线播放网| 好男人社区在线视频| 国产一区在线视频观看| 国产主播福利在线| 国产免费黄色| 精品卡1卡2卡三卡免费网站| 18 激情视频在线| 91亚洲精选| 亚洲www色| 日本不卡影院| av在线免费播放网站| 欧美视频免费一区二区三区| www.操.com| 国产在线激情视频| www.毛片| 中文字幕在线影院| 精精国产xxxx视频在线中文版| av片在线观看| 88av在线| 在线免费观看你懂的| 欧美午夜电影一区二区三区| 亚洲人av在线| 最新亚洲精品国自产在线观看| 国产香蕉视频在线观看| 制服丝袜中文字幕在线观看| 在线播放国产区| 高清av在线| 在线播放国产区| 在线三级中文| 天天草天天干| 国产丝袜护土调教在线视频| 日本视频在线观看一区二区三区| 九九视频精品在线| 精品国产美女福利到在线不卡 | 国产在线拍揄自揄拍视频| 国产国产国产国产国产国产| av在线免费播放| 久久五月精品| 日本黄在线观看| 福利在线观看| 亚洲v片在线观看| 精品国产免费第一区二区| 国产麻豆精品一区二区三区v视界| 91超碰在线免费| 999国产在线视频| 国产三级视频| 最近免费中文字幕在线第一页| 爱福利在线视频| a中文在线播放| 亚洲国产日韩成人综合天堂| 伊人中文在线| 国自产拍在线网站网址视频| jlzzjlzz欧美| 久久五月精品| 亚洲精品一线| 不卡av免费观看| 狂野欧美性猛交xxxx乱大交|