1. 程式人生 > >lua 類繼承和實現

lua 類繼承和實現

從程式碼上說明

Account={balance=0}; --新建了一個對像,他有一個屬性balance

function Account:new(o) --這裡的 :new(o) 中的冒號,程式碼可以省略self ,在訪問的時候object:new(o)  如果是點號 :new(o) 就應改成 .new(self,o)  在訪問的時候 object.(object,o) 
	o= o or {}
	setmetatable(o,self); --O 繼承 self   
	self.__index=self;--關聯元表條目
	return o;
end

function Account.deposit(self,v)
	self.balance=self.balance+v;
end

function Account:withdraw(v)
	if (v) > self.balance then error "insufficient funds"; end
	self.balance=self.balance-v;
end

SpecialAccount=Account:new(); --create a new object class,basic Account class

s=SpecialAccount:new{limit=1000.00};--例項化一個新的SpecialAccount 物件
print (s.balance);
s:deposit(100.00);


function SpecialAccount:withdraw(v)
	if v-self.balance >= self:getLimit() then
		error "insufficient funds";
	end
	self.balance=self.balance-v;
end

function SpecialAccount.getLimit(self)
	return self.limit or 0;
end

print (s.limit);
print (s.getLimit(s))
print (s.balance)


相關推薦

lua 繼承實現

從程式碼上說明 Account={balance=0}; --新建了一個對像,他有一個屬性balance function Account:new(o) --這裡的 :new(o) 中的冒號,程式碼可以省略self ,在訪問的時候object:new(o) 如果是點

java--繼承實現的介面中含有相同的方法

首先,說一下,當某一個類實現了兩個介面的時候,兩個介面中存在兩個相同的方法,在實現的類中只需實現一個方法的方法體。當一個類繼承一個類,並且實現一個或者多個介面的時候,其中,父類和父介面中存在相同的方法。  如果子類中存在該方法的實現體或者說是覆蓋,則使用該類的物件去掉用該方法

繼承實現原理

類的繼承 self. base ict pass nbsp class 輸出結果 ase 1.類的繼承實例 class Hero: aa = ‘11‘ def __init__(self, name, life, damage): sel

介面與抽象繼承實現關係

參考:https://blog.csdn.net/hudfang/article/details/50556277 //c++多繼承與多層繼承 參考:https://blog.csdn.net/Lingfeng928/article/details/51917955  

Java中介面、繼承實現小問題

以下這個問題其實是一個很low的問題,但確實很基礎 今天在看JDK原始碼中發現這一行程式碼: public interface BlockingDeque<E> extends BlockingQueue<E>, Deque<E> 奇怪了,

一種JavaScript繼承super方法呼叫的實現

在設計實現一種Java、Objective-C與JavaScript混合程式設計的程式設計風格JSAppSugar時,需要 JavaScript 語言支援類導向的程式設計風格,然而JavaScript本身是原型導向(Prototype-based)的,因此在JavaScript中也有很多種實現類繼承

Java繼承、介面的繼承實現

Java的介面有繼承和實現兩個概念,介面可以繼承另一個介面,並獲得其父接口裡的所有方法和成員變數,介面也可以被一個類實現,實現介面的類需要實現介面及其父接口裡的所有抽象方法,怎麼理解呢? (1)如果介面A繼承了介面B,那麼介面A就繼承了介面B的所有抽象方法;

實現Thread的兩種方法(繼承實現runnable介面)

實現介面 package button2; import java.awt.Container; import java.net.URL; import javax.swing.*; public class getmain extends JFrame{  /**   *

泛型深入--java泛型的繼承實現、泛型擦除

部分 end father 沒有 接口 子類 set int nal 泛型實現類: package generic; /** * 泛型父類:子類為“富二代”:子類的泛型要比父類多 * 1,保留父類的泛型-->子類為泛型類

python繼承組合

date 子類 read ini import class mon python write 在python3中所有類默認繼承object,凡是繼承了object的類都成為新式類,以及該子類的子類Python3中所有的類都是新式類,沒有集成object類的子類成為經典類(在

逆向第十九講——繼承成員、運算符重載、模板逆向20171211

指針 emp 繼承方式 virtual n) stp 定義 調試 不同的 一、類繼承逆向 在C++中使用到繼承,主要是為了實現多態,那麽多態就必須會用到虛函數,即會產生虛表指針。 (1)父類和子類中有沒用到虛函數的四種情形 1)父類和子類中都沒有用到

編程開發之--Java集合繼承實現必備知識

編程開發 next() int end long dha cos dHash IV 1、LinkedHashSet有序鏈式集合 舉例: long startTime=System.currentTimeMillis(); LinkedHashSet oprTypeSe

08有關設計實現的問題(的結構關系)

怎麽 包含 let 層次 維護 大量 raw int() 模式 一. 類內部的設計和實現 ? 給類定義合理的接口,對於創建高質量程序起到了關鍵作用。然而,類內部的設計和實現也同樣重要。這裏主要論述關於包含、繼承、成員函數和數據成員、類之間的耦合性、構造函數、值對象與引用對象

effective c++條款34:區分介面繼承實現繼承

1. 純虛擬函式也可以有具體實現 #include <iostream> using namespace std; class Airplane { public: virtual void fly(const char *)const = 0; }; void Airplan

關於繼承實現介面的心得

1.繼承 關鍵字:extends 在java中,類約定只能單繼承,但是一個父類可以有多個子類。如果想要實現多繼承的只能進行縱向的,依次繼承;打個通俗的比方就是兒女只能有一個爸爸,爸爸及其姊妹只能有一個爺爺,但是爺爺可以有多個兒女,爸爸也可以有多個兒女

《Effective C++》讀書筆記 條款34:區分介面繼承實現繼承

第一次記錄讀書筆記,因為覺得純讀很沒有意思,於是突然決定開始寫部落格記錄一下,理解的也不深。菜鳥也希望能有進步,希望自己堅持,前面的條款在後來會補。 這一條款主要講純虛擬函式、虛擬函式和普通成員函式在public繼承時不同的地方。public繼承的概念包括兩個:

區分介面繼承實現繼承

公有繼承public的概念,可以分為兩部分:函式介面繼承和函式實現繼承。在public繼承下,派生類總會繼承基類的介面。也就是成員函式的介面總是會被繼承。pure virtual純虛擬函式只具體指定介面繼承。impure virtual(非純)函式具體指定介面繼承及預設實現繼

java兩種啟動執行緒方法根本不同,Thread繼承實現Runable介面

java實現多執行緒有兩種方法 1、繼承Thread類,實現run方法 2、實現Runable介面,實現run方法 示例程式截圖(程式來自瘋狂java講義) 實現步驟 (1)定義Thread類的子類,並重寫該類的run()方法,該run()方法的方法體就代表了執行緒需要

重寫——上轉型物件不能操作子新增成員變數方法但可以操作子繼承重寫的方法

上轉型物件不能操作子類新增成員變數和方法但可以操作子類繼承和重寫的方法 子類重寫父類的前提是;方法名一樣,引數型別和個數一樣。 舉一例可以說明之:  class Father { public Father() { }public void shout(Object word

繼承呼叫父的構造方法

1. 如果子類沒有定義構造方法,則呼叫父類的無引數的構造方法,. 2. 如果子類定義了構造方法,不論是無引數還是帶引數,在建立子類的物件的時候,首先執行父類無引數的構造方法,然後執行自己的構造方法。 3. 如果子類呼叫父類帶引數的構造方法,可以通過super(引數)呼叫所需