修改对象的某个属性的值_什么是类,什么是对象
大家好,在我之前的教程中分別講了"VBA代碼解決方案""VBA數據庫方案""VBA字典和數組方案",通過對這三套教程的學習,我們對VBA的基本知識和基本的操作能有了一定的了解。這套教材是在前面教材基礎上的講解,希望大家在學習前面教材的基礎上再學習本套教材。這套教程,我們開始講解VBA的高級內容,類和類模塊應用。今日的內容是第一講:什么是類,什么是對象。
一什么是類? 類是對象的"靈魂"。對象可以是任何事物,而類不會做任何事情,也不會占用內存,只有當類成為對象并使用Set語句和New關鍵字實例化為具體對象后,才能做事情并占用內存。
把類實例化為具體對象的語法為:
Dim C As Class
Set C=New Class
上述語句創建了一個名為C的對象,該對象的數據類型為定義的類Class。其特點是:
1 使用New關鍵字,可以創建任意數量的類的新實例,并且能夠將其存儲在Collection對象中。
2 使用Property Let/Set/Get語句,可以編寫代碼驗證賦給類元素的值,并且可以編寫當值改變時執行的相應代碼。例如,能夠編寫代碼確保某個值為要求的特性。
3 類可以定義方法(使用Sub過程和Function過程),執行某項動作。
注意點:與用戶自定義類型的區別,下面給出了自定義數據類型的特點:
1 在編譯時必須聲明所有的自定義類型變量??梢允褂脛討B數組來處理多個自定義類型,但須使用Redim Preserve關鍵詞。
2 不能在運行時添加新的自定義類型變量。
3 不能控制賦給自定義類型中元素的值。如只能定義為整數,但假如要求是大于5的值無法進行控制。
4 自定義類型只是靜態地存儲數據。
二 什么是類模塊,類屬性和方法:
類模塊由屬性和方法組成,類本身類似于名詞;屬性可以當作形容詞,用來描述類;方法則為動詞,執行操作
三 類和對象的比較
讓我們先來看一條非常簡單的程序,讓我們親身體會一下類的廬山真面目:
Sub mynzclass1_1()
Sheets("1").Activate
Range("A1").Value = "Hello,VBA world"
End Sub
上面代碼的第二句:Range("A1").Value = "Hello,VBA world"
我們把這這句代碼全部放開,把隱藏的補充完整,看看是什么樣子:
Application.ActiveWorkbook.ActiveSheet.Range("A1")="Hello,VBA world"
我們解釋一下:
1 Range("A1")為對象,指定單元格.
2 Range("A1")前面,ActiveSheet也是對象,指定了哪個工作表。
3 ActiveSheet前面又有一個對象ActiveWorkbook,指定了是哪個工作薄,
4 ActiveWorkbook前面還有一個Application,指定的是哪個應用。
那么其中的Value是什么?Value是一個Range("A1")這個對象的一個屬性。那它是從哪來的呢?它是由Range類定義的。那么range是類還是對象呢?別急,我慢慢講解,希望大家通過我的講解能理解類和對象的關系。
在上面的講解中,我們提到實例化類為具體對象的過程,其實在mynzclass_1引用了一個Range類,并將之實例化后修改了它的屬性。而在例子中,我們只不過是將這一切都以隱藏起來,直接對一個對象Range("A1")修改它的屬性,但Range("A1")這個對象正是引用了Ragne這個類,才具有了Range類的屬性"Value"。
我們把上面的代碼轉換一下:
Sub mynzclass1_2 ()
Sheets("1").Activate
Dim RA As Range '引用一個Range類
Set RA = Range("A1") 'set將類實例化
RA.Value = "Hello,world" 'RA是一個對象了
Set RA = Nothing '將實例化銷毀
End Sub
這段代碼是上面mynzclass1_1的原始代碼,從中我們看出類本身并不直接為我們做什么,但是,它卻又一直默默地隱藏在幕后規化著我們的動作。是的,這就是類。它是通過對象的方式展現在我們的面前,讓我們無時無刻與之交流,卻又常常在不經意間忽視了它的存在。
現在再回到mynzclass1_1去看,就會很容易的發現,ActiveSheet實際引用了Worksheet類、ActiveWorkbook引用了Workbook類,而Application則引用了和它同名的Application類(這也正是我們會經常被混淆的一個概念,一個對象可以和被它所引用的類同名),原來我們在短短一個賦值的語句中,已經在與這么多的類打交道。
那我們又要怎樣來區分類和對象呢?其實它們經常成對地出現在我們面前,只是一個是看得見摸得著的,一個卻深藏不露。我們可以這樣去理解類與對象:類是一個概念或是一種定義,每個類擁有其自己的特征和行為方式,而對象就是某個類的實例。所以類是對象的"靈魂",它無處不在,而你卻看不到它。
比如:汽車
如果作為類:汽車的定義為有四個或者四個以上輪子,人能夠坐在上面,操作它行走的工具(好難的定義)。這個時候"汽車類"是有自己的屬性,如:汽車的前輪(是負責轉向的)。汽車的前玻璃(是負責擋風的)等等。這里的"汽車"是一個概念抽象的概念。
而我們通常指的汽車是作為對象:如豐田汽車就是汽車類中的一個大對象,這個大對象中還有小的對象,如"威馳FS"對象,屬性:輪子是某某牌子的,前擋風玻璃是某某牌子的。這些就是很具體的屬性值了。
今日內容回向:
1 什么是類?
2 類和對象的聯系是什么?
總結
以上是生活随笔為你收集整理的修改对象的某个属性的值_什么是类,什么是对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 索尼a6000怎么越来越贵
- 下一篇: java控制台等待输入