CSharp學習筆記之六 類

衆所周知,C#是一種面向對象的語言。對於面嚮對象語言,所具備的特徵就是抽象、繼承、封裝、多態。

抽象:所謂的抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。

繼承:所謂的繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱爲類繼承。新類繼承了原始類的特性,新類稱爲原始類的派生類(子類),而原始類稱爲新類的基類(父類)。派生類可以從它的基類那裏繼承方法和實例變量,並且類可以修改或增加新的方法使之更適合特殊的需要。

封裝:封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。

多態:多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行爲共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。

瞭解完面向對象的基本特徵之後,我們來開C#中的類。首先來介紹一下什麼是類.

在現實世界中,經常有屬於同一類的對象。例如,你的自行車 只是世界上很多自行車中的一輛。在面向對象軟件中,也有很 多共享相同特徵的不同的對象:矩形、僱用記錄、視頻剪輯 等。可以利用這些對象的相同特徵爲它們建立一個藍圖。對象 的軟件藍圖稱爲類。

類是定義同一類所有對象的變量和方法的藍圖或原型。例如,可以建立一個定義包含當前檔位等實例變量的自行車 類。這個類也定義和提供了實例方法(變檔、剎車)的實現。

 

下面來解釋一下類的基本定義:

在C#中使用class 來定義一個類

class MyClass
{
      // class code
}

在上面你的代碼中我們定義了一個MyClass類,定義一個類之後,我們就可以在項目中來對該類進行實例化。 比如說MyClass C1。這樣就是實例化一個MyClass的類。在默認情況下,類的聲明是內部的,也就是說,該類在聲明過後,只能夠在該項目中進行訪問。

其實類也可以通過特殊字符來來對該類的進行一個修飾,具體實例如下所示:

public clas MyClass
{
     // MyClass code
}

這樣我們就定義了一個公共的類,而這個公共的類,就不僅僅是使用在當前的項目裏面,而且可以被其他的項目進行一個訪問。

另外我們還可以通過abstract和sealed來定義個抽象類和密封的類,所謂的密封類,就是不能夠用來進行的繼承的類,所謂的抽象類,就是不能夠通過該類進行實例化對象的一個類。

具體的定義事例如下:

public sealed class MyClass
{
     // MyClass code
}

這個例子就是定義了一個密封的類。

類的繼承在C#中的類的繼承其實很簡單,就是通過一個子類:父類,來進行的一個類的繼承的,當讓C#和java是一樣的,類的繼承只支持單繼承,而不支持多繼承。如果繼承了一個抽象類,就必須實現所繼承的所有抽象成員(除非派生類也是抽象的

public class base
{
    // Base class code
}

public calss MyClass:base
{
    //  MyClass code
}


上面的例子給了一個類的繼承的例子。

編譯器不允許派生類的可訪問性比其基類更高。也就是說,內部類可以繼承於一個公共類,但公共類不能繼承於一個內部類。因此,下述代碼是合法的:

public class MyBase
{
    // Class members;
}
internal class MyClass : MyBase
{
    // Class members;
}

而下面的代碼是不合法的,編譯器是不能夠編譯通過的:

internal class MyBase
{
    // Class members;
}
public class MyClass : MyBase
{
    // Class members.
} 

上面已經介紹了類只能進行單繼承,不支持多繼承的,但是有些情況要進行多繼承該怎麼辦呢,在C#中是通過接口來實現的。比如說下面的東西來進行的實現

public class MyClass : IMyInterface{// Class members.}

 

然後呢,這裏附上類的修飾符參考表:




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章