類別
文章推薦指數: 80 %
類別是使用 class 關鍵字來宣告,後面接著唯一識別碼,如下列範例所示:. C# 複製. //[access modifier] - [class] - [identifier] public class ...
跳到主要內容
已不再支援此瀏覽器。
請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。
下載MicrosoftEdge
其他資訊
目錄
結束焦點模式
閱讀英文
儲存
目錄
閱讀英文
儲存
Twitter
LinkedIn
Facebook
電子郵件
目錄
類別簡介
發行項
09/20/2022
1位參與者
本文內容
參考型別
定義為的class類型是class別。
在執行時間,當您宣告參考型別的變數時,該變數會包含值null,直到您使用new運算子明確建立類別的實例,或為它指派可能已在其他地方建立之相容型別的物件,如下列範例所示:
//DeclaringanobjectoftypeMyClass.
MyClassmc=newMyClass();
//Declaringanotherobjectofthesametype,assigningitthevalueofthefirstobject.
MyClassmc2=mc;
建立物件時,會在受控堆積上配置足夠的記憶體給該特定物件,而變數只會保留該物件位置的參考。
配置以及由CLR的自動記憶體管理功能(也就是「記憶體回收」)回收Managed堆積上的類型時,都需要額外負荷。
不過,記憶體回收也已獲得高度最佳化,因此在大部分情況下並不會產生效能問題。
如需記憶體回收的詳細資訊,請參閱自動記憶體管理和記憶體回收。
宣告類別
類別是使用class關鍵字來宣告,後面接著唯一識別碼,如下列範例所示:
//[accessmodifier]-[class]-[identifier]
publicclassCustomer
{
//Fields,properties,methodsandeventsgohere...
}
class關鍵字的前面會加上存取層級。
因為在此情況下會使用,所以public任何人都可以建立這個類別的實例。
類別的名稱遵循class關鍵字。
類別名稱必須是有效的C#識別碼名稱。
定義的其餘部分是定義行為和資料的類別主體。
類別上的欄位、屬性、方法和事件統稱為「類別成員」。
建立物件
雖然它們有時會交換使用,但是類別和物件不同。
類別會定義一種類型的物件,但不是物件本身。
物件是根據類別的具體實體,而且有時稱為類別的執行個體。
您可以使用new關鍵字來建立物件,後面接著物件將依據的類別名稱,如下所示:
Customerobject1=newCustomer();
建立類別的執行個體時,會將物件的參考傳回給程式設計人員。
在上述範例中,object1是根據Customer之物件的參考。
這個參考參照新的物件,但不包含物件資料本身。
事實上,您可以建立物件參考,而根本不需要建立物件︰
Customerobject2;
我們不建議您建立物件參考,例如未參考物件的上一個物件參考,因為嘗試透過這類參考來存取物件將會在執行時間失敗。
不過,您可以藉由建立新的物件,或為其指派現有的物件(如下所示),來參考物件:
Customerobject3=newCustomer();
Customerobject4=object3;
這個程式碼會建立同時參照相同物件的兩個物件參考。
因此,任何透過object3進行的物件變更都會反映在後續使用object4時。
因為以傳址方式參照根據類別的物件,所以類別稱為參考型別。
類別繼承
類別完全支援「繼承」,這是物件導向程式設計的基礎特性。
當您建立類別時,可以繼承自任何其他未定義為sealed的類別,而其他類別可以繼承自您的類別,並覆寫類別虛擬方法。
此外,您可以執行一或多個介面。
使用「衍生」可完成繼承,這表示使用從中繼承資料和行為的「基底類別」來宣告類別。
附加冒號以及接著衍生類別名稱後面的基底類別名稱,以指定基底類別,與下面類似:
publicclassManager:Employee
{
//Employeefields,properties,methodsandeventsareinherited
//NewManagerfields,properties,methodsandeventsgohere...
}
類別宣告基底類別時,會繼承基底類別的所有成員,但建構函式除外。
如需詳細資訊,請參閱繼承。
C#中的類別只能直接繼承自一個基類。
不過,因為基底類別本身可以繼承自另一個類別,所以類別可能會間接繼承多個基底類別。
此外,類別可以直接執行一或多個介面。
如需詳細資訊,請參閱介面。
可以abstract宣告類別。
抽象類別包含具有簽章定義但沒有實作的抽象方法。
無法具現化抽象類別。
它們僅用於實作抽象方法的衍生類別。
相較之下,sealed類別不允許從它衍生其他類別。
如需詳細資訊,請參閱抽象和密封類別和類別成員。
類別定義可以在不同的原始程式檔之間進行分割。
如需詳細資訊,請參閱部分類別和方法。
範例
下列範例定義了一個公用類別,其中包含自動實作屬性、方法以及稱為建構函式的特殊方法。
如需詳細資訊,請參閱屬性、方法和函式文章。
然後使用new關鍵字具現化類別的執行個體。
usingSystem;
publicclassPerson
{
//Constructorthattakesnoarguments:
publicPerson()
{
Name="unknown";
}
//Constructorthattakesoneargument:
publicPerson(stringname)
{
Name=name;
}
//Auto-implementedreadonlyproperty:
publicstringName{get;}
//Methodthatoverridesthebaseclass(System.Object)implementation.
publicoverridestringToString()
{
returnName;
}
}
classTestPerson
{
staticvoidMain()
{
//Calltheconstructorthathasnoparameters.
varperson1=newPerson();
Console.WriteLine(person1.Name);
//Calltheconstructorthathasoneparameter.
varperson2=newPerson("SarahJones");
Console.WriteLine(person2.Name);
//Getthestringrepresentationoftheperson2instance.
Console.WriteLine(person2);
}
}
//Output:
//unknown
//SarahJones
//SarahJones
C#語言規格
如需詳細資訊,請參閱c#語言規格。
語言規格是C#語法及用法的限定來源。
本文內容
延伸文章資訊
- 1C# 的class 前面加public 是什麼意思 - J & K
public 說公用類別對於初學者不太容易了解比較白話的意思是公開的資料大家都能存取大家都能看到可以塞…
- 2Java 编程中public class 是什么意思啊? - 百度知道
public class是JAVA定义的,一般占到编程的角度来将就是包含main方法的,一个java文件中。 Java是一门面向对象编程语言,不仅吸收了C++语言的各种 ...
- 3Java重點筆記三:變數的三種類型 - iT 邦幫忙
public class Cat{ public void catAge(){ int age = 0; age = age + 7; System.out.println("Cat age i...
- 4進階類別(Class) - Java學習筆記
public void getValue(){ super.getValue(); System.out.println("z = " + z); } } public class exampl...
- 5類別
類別是使用 class 關鍵字來宣告,後面接著唯一識別碼,如下列範例所示:. C# 複製. //[access modifier] - [class] - [identifier] public...