繼承即乙個類可以派生出新的類,而且新的類能繼承基類的成員;多型性是指相同的操作或方法可作用於多種型別的物件,並獲得不同的結果,多型性是通過繼承來實現的。繼承和多型使包括c#在內的所有物件導向語言的本質核心。
如果乙個類繼承了它的直接基類的成員,這個類就叫做它的基類的子類或者派生類。繼承意味著子類隱式的把它的直接基類的所有成員當做自己的成員,但是子類並不能繼承基類的建構函式和析構函式。
c#的繼承原則
(1)除了類object,每個類有且只有乙個直接基類。
(2)無論基類成員的可訪問性如何,除建構函式和析構函式以外,所有其他基類的成員都能被繼承。然而,有些繼承成員在派生類可能是不可訪問的,著取決於基類成員的可訪問性。例如基類的private成員也是子類的private成員,但在子類中不可訪問。
public
class
shape
set}
public
shape()
//建構函式
public
shape
(string name)
public
void
draw()
}public
class
rectangle
:shape
}public
int height
}public
rectangle()
public
rectangle
(int x,
int y)
public
intcomputearea()
}
根據上述例子,rectangle類將繼承shape類的以下成員:
1.comments欄位:型別為private,在rectangle類內部不可見,只在shape類內可見。
2.name欄位:型別protected,在rectangle類內是可訪問的,在類外不可訪問。
3.name屬性
4.draw方法
所以,紀要保證基類的成員在子類中可見,又要保證資料的封裝性,那麼可以使用protected訪問修飾符。如果是基類專有的,是不希望子類看見的,就應該使用private修飾符。
在具有繼承關係的類中,不同物件的簽名相同的函式成員可以有不同的實現,因而會產生不同的執行結果,著就是多型性。c#的執行多型性通過再子類中重寫基類的虛方法或函式成員來實現。
虛方法:例項方法的宣告中含有virtual修飾符,它不允許與static,abstract,private或者override修飾符同時使用
重寫方法:例項方法宣告中含有override修飾符,重寫方法用相同的簽名重寫所繼承的虛方法。虛方法宣告用於應用新方法,而重寫方法宣告則使用從基類繼承而來的虛方法專用化。重寫方法只能用於重寫基類的虛方法。
繼承和多型
物件導向程式設計時有乙個非常重要的原則 write once only once 編寫一次,且僅編寫一次 如果沒有繼承這種機制我們可能要重複寫很多 下面來看一下繼承 一 繼承 1 子類如果繼承父類必須使用extends這個關鍵字 2 子類呼叫父類的構造方法使用super關鍵字,也可以通過super來...
繼承和多型
物件導向程式設計時有乙個非常重要的原則 write once only once 編寫一次,且僅編寫一次 如果沒有繼承這種機制我們可能要重複寫很多 下面來看一下繼承 一 繼承 1 子類如果繼承父類必須使用extends這個關鍵字 2 子類呼叫父類的構造方法使用super關鍵字,也可以通過super來...
繼承和多型
類還有乙個重要的特性就是繼承,什麼是繼承?它又有什麼作用呢?繼承最主要的目的就是為了擴充套件原類的功能,加強或改進原類所沒有定義的屬性及方法。例如我們有狗這個類,可是狗的種類還是有很多,比如說博美狗,聖伯納,柴犬等等,如果只用狗一種類來定義所有種類狗的屬性及方法,那麼用這個類所產生出來的物件一定會有...