C 篇 物件導向之繼承

2021-07-08 15:54:19 字數 1539 閱讀 7499

物件導向有三大特色:多型、繼承和封裝,我們已經熟悉的不能再熟悉了,然而在c#中要怎麼用呢?現在就著重總結一下繼承。

在很早之前就聽他們說vb並不是真正的物件導向,它是一種面向過程的設計語言,在學習c#的這些日子裡,逐漸明白了物件導向是怎麼一回事。在以前我們敲**的時候是乙個功能乙個功能的實現,而現在我們是要將裡面用到的詞抽象出來。對於學生資訊系統,我們要完成學生上機的**就要在裡面加入功能,而物件導向是將學生類、老師類抽象出來。

現在就看一下多型,多型之前在講uml的時候就已經被提到過,當發出彈奏的命令時,小提琴、鋼琴等樂器都會彈奏,但是演奏的形式是不同的(小提琴是要拉、鋼琴是要彈的)。 繼承

對於人類、老師類、學生類都有年齡、性別、年齡等屬性,我們無需再每乙個類中都重複寫這些**,我們可以把相同的東西抽象出來,抽象出乙個父類,然後子類繼承即可。子類也叫作派生類,父類也叫作基類。而object 類是所有類的父類。

繼承兩大特性

1傳遞性

子類繼承父類的時候

子類中的值可以傳到父類中

2單根性

父類只有乙個

,子類可以有很多個

呼叫建構函式

public class teacher:person

我們還見過在後面加:base(引數的情況)

加入base後和父類相同的姓名、性別屬性可以不再加了,寫子類特有的就可以。

修飾符

protected 

訪問修飾符不允許其他非子類訪問。也就是只能在子類間可以使用。

重寫子類和父類都有相同的函式名的時候,可以用重寫方法

父類中宣告虛方法

public virtual double show()

子類重寫

public override double show()

和重寫很類似的是 抽象類和抽象方法的運用

抽象類的宣告

public  abstract  class animal

抽象方法的特性

抽象方法沒有方法體

抽象類可以有非抽象成員

抽象方法必須放在抽象類中

抽象類只能做基類無法例項化

子類必須要對父類中的抽象方法進行重寫

虛方法 vs 抽象方法

既然子類都可以重寫父類的方法,那麼抽象方法和虛方法有什麼不同呢? 

抽象方法和虛方法的區別在於:虛擬方法有乙個實現部分,並為派生類提供了覆蓋該方法的選項,相反,抽象方法沒有提供實現部分,強制派生類覆蓋方法(否則 派生類不能成為具體類);

abstract方法只能在抽象類中宣告,虛方法則不是;

abstract方法必須在派生類中重寫,而virtual則不必;

abstract方法不能宣告方法實體,虛方法則可以。

我對於抽象類的理解舉例來說:動物都會叫,但是叫的方式不同,在父類中你不能規定怎樣叫,只能宣告一種會叫的方法,方法實體中不會宣告具體行為。

物件導向c 之繼承

物件導向三大機制包括 1.封裝,隱藏內部實現。2.繼承,復用現有 物件導向最顯著的特徵 3.多型,改寫物件行為。繼承,是一種復用的手段。是從先輩處得到屬性和行為特徵。類的繼承就是新的類從已 有 的類那裡得到已有的特徵。類成員的訪問限定有三種 public,protected,private,在類外可...

c 物件導向之繼承

1 什麼是繼承?繼承簡單來理解就是子承父業,也即是孩子可以直接使用父親的東西,這樣自己就可以少奮鬥一些,父親有的東西可以直接拿過來用。2 程式設計中為什麼要用繼承?在程式設計中,對程式猿來說最想做的就是用盡可能少且高效的 實現想要的功能。就像好多人都不願白手起家一樣,直接繼承父母的財產,使用繼承可以...

物件導向之繼承

此段摘自 繼承方式限定了基類成員在派生類中的訪問許可權,包括 public 公有的 private 私有的 和 protected 受保護的 此項是可選的,如果不寫,預設為 private 或 protected。不要將繼承方式和成員屬性搞混了,不同的繼承方式會賦予繼承來的成員不同的屬性 簡單說一下...