c# 學習筆記04 – 繼承, 抽像類別, 介面

基礎類別(base class)和衍生類別(derived class)

這一部分是說到 c# 有關類別繼承方面的東西,和 java 不同的地方,是 c# 對於類別的稱呼,在 java 中是稱為父類別(superclass)和子類別( subclass) 在 c# 中是採用 c++ 的術語以基礎類別(base class)和衍生類別(derived class)來稱呼。

存取修飾字方面,和 java 一樣有 protected 修飾字,衍生類別的建構子中,想要呼叫基礎類別的建構字,是採用下列語法:

class Shape {
    public Shape(int n) {
    }
}
class Triangle : Shape {
    public Triangle (int n, string name)  :  base(int n) {
    }
}

base 也可以用來存取基礎類別中被遮蔽(hide)的變數,使用 base.member 的型式,其中 member 可以是 method 或是 instance veriable 。

在有繼承關係時,產生衍生類別實體,其呼叫建構子的順序和 java 的一樣,都是會先呼叫基礎類別的建構子,再呼叫衍生類別本身的建構子。

抽像類別前要加 abstract 關鍵字

不可再繼承的類別使用 sealed 關鍵字,效果等同 java 在類別宣告前加上 final

object 是所有類別和型別(包和數值型別)的基礎型別,數值型別可以透過 裝箱(boxing) 轉成 object 可以接受的型別。

c# 同樣具有 interface, 在 interface 中所宣告的 method,一定是 public method, 實作 interface 的時候,可以透過 void interfaceName.method() 的方式,直接指定所要實作的是哪一個 interface method 來產生 private 級別的實作,只能讓實作類別內部使用的 method。
在 interface 中,所有的 method 都是 public 級別,並且不允許使用任何修飾字(包含 public)。
可以宣告 interface 的參考變數,再讓 interface 參考變數指向實作類別的 instance, 可以達到多型的效果,而且不用使用到 virtual 和 override 關鈹字。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: