直播中
private string variety = "";
public Apple(string appleVariety) {
this.variety = appleVariety;
}
public void outputVariety() {
System.Console.WriteLine(variety);
}
}
第二個文件是Example2.cs,內(nèi)容如下:
class Example2 {
static void Main() {
Apple mac = new Apple("Macintosh ");
Apple gra = new Apple("Granny Smith");
Apple cor = new Apple("Cortland");
mac.outputVariety();
gra.outputVariety();
cor.outputVariety();
}
}
首先,我們定義了一個新的用戶定義類,名字為Apple。雖然Apple類并不一定要放到獨立的文件中,但把每個類都放到自己獨立的文件中是一個好的面向?qū)ο缶幊塘?xí)慣,有助于簡化組織和管理。我們?yōu)锳pple類的聲明加上了public修飾符(public class Apple),這樣其他類就可以創(chuàng)建Apple類的實例。
下一行代碼定義了實例變量variety。使用了修飾符private之后,只有在Apple類的內(nèi)部才可以直接訪問variety變量。這是一種常見的面向?qū)ο缶幊塘?xí)慣,稱為封裝。封裝之后,對象的工作細節(jié)對于對象的用戶來說就隱藏不可見了。你現(xiàn)在正使用的鍵盤就是封裝在現(xiàn)實世界中一個很好的例子。我們并不完全了解鍵擊如何發(fā)送到控制器(我們之中的大多數(shù)都不知道),但只要理解它的接口如何運作就可以了。例如我們知道,打開文本編輯器,按下鍵盤上的“&”鍵,“&”字符就會出現(xiàn)在屏幕上。如果每一個人都必須了解鍵盤的工作細節(jié)而不是只要了解它的接口,我們之中不會有很多人使用它。
接下來的三行代碼是:
public Apple(string appleVariety) {
this.variety = variety;
}
這三行代碼定義了Apple類的構(gòu)造函數(shù)。類的構(gòu)造函數(shù)類似一個描述如何創(chuàng)建類實例的藍圖。我們能夠很容易地將構(gòu)造函數(shù)和類里面的其他方法區(qū)分開來,因為構(gòu)造函數(shù)總是和類具有相同的名字。在本例中,類Apple的構(gòu)造函數(shù)有一個字符串參數(shù),這個參數(shù)值隨后被保存到實例變量variety。
Apple類的最后一個方法是outputVariety()。這個方法為訪問實例變量提供了接口,所以稱為存取方法(Accessor Method)。
下面我們來看Example2類。這個例子與前文例子的區(qū)別在于要創(chuàng)建并使用用戶定義類Apple的實例。我們用new操作符創(chuàng)建了三個Apple類的實例。創(chuàng)建類的實例時,我們無需顯式地調(diào)用類的構(gòu)造函數(shù),new操作符將自動為我們調(diào)用類的構(gòu)造函數(shù)。創(chuàng)建了三個Apple類的對象之后,我們依次調(diào)用這三個對象的outputVariety方法,由outputVariety方法輸出這三個對象里variety的值。
下面我們來編譯和運行這個例子。首先我們要把Apple類編譯成動態(tài)鏈接庫,命令如下:
csc /target:library Apple.cs
/target:library表示不要創(chuàng)建執(zhí)行文件,而是創(chuàng)建一個.dll文件(即動態(tài)鏈接庫)。所以,上面的命令將生成一個Apple.dll文件。
接下來我們編譯Example2.cs,編譯命令如下所示:
csc /reference:Apple.dll Example2.cs
現(xiàn)在我們得到了執(zhí)行文件Example2.exe。執(zhí)行這個文件可以在控制臺上看到如下輸出:
Macintosh
Granny Smith
Cortland