[畢業生的商業軟體開發之路]C#類型樣式

來源:互聯網
上載者:User

近期開始接觸到在校學生、高校實習生和畢業生,在此說一下筆者對這些徘徊在職場門口的學生一些建議,希望能給這些初學者進入軟體開發行業帶來一些協助,使得畢業生能更順利的進入軟體開發公司開始職場生涯,人生來一個完美的轉彎。

------------------------------------------------------------------------------------

類型樣式

在定義類型的時候可以指定類型的一些特性,這些樣式有 static class 靜態類被“static”修飾的類就是靜態類型,靜態類型其所有的成員都必須標記為靜態,否則會編譯錯誤。靜態類型一般用於容納一些通用的常式,比如某些科學數值運算等。以下C#代碼就定義了一個靜態類型

public static class MyStaticClass{    public static int Sum(int a, int b)    {        return a + b;    }}
在代碼“public static class MyStaticClass”中,“public”定義類型為公開的,“static”說明該類型是靜態,“class”說明正在定義一個類類型,“MyStaticClass”是類型名稱。在這個類型中定義了一個靜態方法Sum,在靜態類型中不能定義非靜態成員。由於類型的建構函式也是靜態,因此靜態類型不能執行個體化。關於靜態方法可參考下節。  abstract class 抽象類別被“abstract”修飾的類就是抽象類別,抽象類別是一種介於類和介面之間的類型,定義為抽象類別說明其有部分內容尚未實現,有待以後被繼承被擴充。以下代碼就定義了一個抽象類別

public abstract class MyAbstractClass{    public abstract int Sum(int a, int b);     public int Div(int a, int b)    {        return a / b;    }}
在代碼“public abstract class MyAbstractClass”中,關鍵字“abstract”就聲明了該類型為抽象類別;在代碼“public abstract int Sum(int a, int b);”中,關鍵字“abstract”就聲明該成員為抽象成員,抽象成員只能留個定義,不能有任何功能實現代碼,因此在這裡聲明一下Sum方法就用分號結束了定義。抽象類別可以包含不抽象的方法,比如此處包含了一個完整的Div成員方法。。抽象類別不能執行個體化,對於類型“我的抽象類別”,代碼“MyAbstractClass instance = new MyAbstractClass( )”是錯誤的,抽象類別必須派生出其他類型才能使用;而且派生的時候,所有的抽象成員必須強制被重寫。由於抽象類別必須被重載,因此抽象類別不能是密封類,也就是說關鍵字“abstract”和“sealed”是相互排斥的。以下代碼就從抽象類別“MyAbstractClass”派生新的類型

public class MyClassFromMyAbstractClass : MyAbstractClass{    public override int Sum(int a, int b)    {        return a + b;    }}
 由於從抽象類別派生新類型時,開發人員可能忘記抽象類別中定義的抽象成員,此時VS.NET的C#代碼編輯器提供協助功能,這個和協助產生實現介面的功能類型,如所示 當文本游標移動到方框處的“MyAbstractClass”,則左下角出現一個智能標籤,滑鼠點擊這個智能標籤會彈出一個菜單,點擊功能表項目“實現抽象類別“MyAbstractClass””就會自動產生以下代碼。[袁永福著作權]

public class MyClassFromMyAbstractClass : MyAbstractClass{    public override int Sum(int a, int b)    {        throw new NotImplementedException();    }}
這個時候開發人員就可以往重載的成員中添加功能代碼了。由於抽象類別型不能執行個體化,因此必須藉助它的衍生類別型才能使用,比如以下的代碼

MyAbstractClass instance = new MyClassFromMyAbstractClass();instance.Div(1, 2);instance.Sum(3, 4);
當然衍生類別型可以獨立使用,如以下代碼

MyClassFromMyAbstractClass instance2 = new MyClassFromMyAbstractClass();instance2.Div(1, 2);instance2.Sum(3, 4);
sealed class 密封類被關鍵字“sealed”修飾的類是密封類,密封類可以繼承自其它類,但不能被繼承,不能包含虛方法和抽象方法。以下代碼就定義了一個密封類

public sealed class MySealedClass{    public int Sum(int a, int b)    {        return a + b;    }}
由於密封類不能被繼承,不能被擴充,這可能會影響系統的擴充性,因此慎用,在實際中用得比較少。[袁永福著作權]
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.