繼承和多型

2021-10-02 06:18:12 字數 1396 閱讀 2888

繼承即乙個類可以派生出新的類,而且新的類能繼承基類的成員;多型性是指相同的操作或方法可作用於多種型別的物件,並獲得不同的結果,多型性是通過繼承來實現的。繼承和多型使包括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來...

繼承和多型

類還有乙個重要的特性就是繼承,什麼是繼承?它又有什麼作用呢?繼承最主要的目的就是為了擴充套件原類的功能,加強或改進原類所沒有定義的屬性及方法。例如我們有狗這個類,可是狗的種類還是有很多,比如說博美狗,聖伯納,柴犬等等,如果只用狗一種類來定義所有種類狗的屬性及方法,那麼用這個類所產生出來的物件一定會有...