類中的成員有屬性和方法,如何對其成員經行封裝
?
通過protected和local關鍵字設定成員的訪問許可權,以此達到封裝的目的。也就是外部不能直接對類中的成員經行訪問以及改寫
,但是可以通過set和get方法進行間接方法以及改寫。
例子:
class clock
local bit is_sunmer = 0; //local 關鍵字,外部不可直接訪問
local int nclock = 6;
function int get_clock(); //定義get_clock函式,返回int 型clock,this表示這個類本身
if(!is_sunmer) return this.nclock;
else return this.nclock+1;
endfunction
function bit set_sunmer(bit s) //定義set_sunmer函式,傳入bit s,返回乙個bit型資料,但是這兒沒有定義返回。
this.is_sunmer = s;
endfunction
endclass
呼叫:
clock ck;
initial begin
ck = new();
$display("now time is %0d", ck.get_clock()); //通過get方法獲得當前的時鐘變數 ,this.nclock=6
ck.set_sunmer(1'b1); //通過set方法,傳入s=1,is_sunmer=s=1,
$display("now time is %0d", ck.nclock) //報錯
$display("now time is %0d", ck.get_nclock) //get_clock()返回,this.nclock+1=7
end
訪問限制:
local
限制:只有該類自己可以訪問成員變數,子類和外部例化類均無法訪問。
protected
限制,只有該類自己和子類可以訪問成員變數,外部例化類無法訪問。
public
限制,成員預設是public
型別的,子類和外部例化類均可以訪問。
類可以在**定義:
module,inte***ce,program,package。
在類中可以包括其他類的控制代碼嗎?可以
類中this是?
在類中使用this
,表明this.x
所呼叫的成員是當前類的成員,而非與之同名的區域性變數,或者形式引數。
例子:
function new(string name) //傳入name變數
this.name =name; //這裡name是這個function傳進來的變數,假如function傳入不是name變數,那麼就會去父類中的變數去找,父類中找不到,就去子類中找,再找不到就去全域性中找。原則是:由近及遠。(父類中範圍挨著這個function近。)
就是當前類的成員變數,找不到就到它的父類中去找
endfunction
c 中類的封裝
連線directshow filter cvideo 類中,這樣程式簡潔明瞭,易於操作,不容易出錯,提高了程式的魯棒性。1.類的定義 類是定義同一類所有物件的變數和方法的藍圖或原型。例如,可以建立乙個定義包含當前檔位等例項變數的自行車類。這個類也定義和提供了例項方法 變檔 剎車 的實現。例項變數的值...
七 類中的封裝
1 如電腦類由鍵盤類 滑鼠類 顯示類 cpu類 memory類等類組成 2 類通常可以分為以下兩個部分 a.類的實現細節 b.類的使用方式 使用者一般只關心怎麼使用,而不會關心內部到底如何實現 1 當使用類的時候不需要關心其實現細節 2 當建立乙個類時,才需要考慮其內部實現細節 3 封裝的基本概念 ...
C 中的類與封裝
c 中的類與封裝 1,類的組合 1,類不是孤立存在的,類之間都會有一些關係,組合就是類的基本關係之一 2,電腦一般而言是由 cpu 記憶體 主機板 鍵盤和硬碟等部件組合而成 3,學習電腦組裝需要多少時間?學習電腦組裝是否需要學習顯示器 鍵盤 滑鼠 主機板 記憶體等部件的設計與製造?1,我們可以使用乙...