C 繼承總結

2021-09-22 16:38:10 字數 1664 閱讀 1241

繼承是在類之間建立一種相交的關係,使得新定義的派生類的例項可以繼承已有的基類的特徵並且還可以新增新的功能。以前對繼承的理解僅僅限於定義,下面是我查了些資料、寫了點**的總結。

1.c#繼承的特點

(1) 派生類是對基類的擴充套件,派生類可以新增新的成員,但不能移除已經繼承的成員的定義。

(2)繼承是可以傳遞的。如果c從b中派生,b又從a中派生,那麼c不僅繼承了b中宣告的成員,同樣也繼承了a中宣告的成員。

(3)建構函式和析構函式不能被繼承,除此之外其他成員能被繼承。基類中成員的訪問方式只能決定派生類能否訪問它們。

(4)派生類如果定義了與繼承而來的成員同名的新成員,那麼就可以覆蓋已繼承的成員,但這兵不是刪除了這些成員,只是不能再訪問這些成員。

(5)類可以定義虛方法、虛屬性及虛索引指示器,它的派生類能夠過載這些成員,從而使類可以展示出多型性。

(6)派生類只能從乙個類中繼承,可以通過介面來實現多重繼承。

2.乙個簡單的基礎實現

//從執行結果可以看到很重要的一點,繼承時先執行父類建構函式,

//接著再執行子類建構函式,最後再執行方法

class program

}public class people

public void eat()

}class man:people

public void whoeat()

}

3.隱藏基類成員

//當派生類需要覆蓋基類的方法時,c#使用new修飾符來實現隱藏基類成員

class program

}public class people

public void eat()

}class man:people

public new void eat()

}

4.抽象類、密封類、抽象方法和虛方法

首先還有一種類需要注意,那就是密封類。如果我們對類不作任何約束,也就是說所有類都可以被繼承,這種繼承的濫用會導致類的層次結構十分龐大,類與類之間的關係會變得很亂導致無法理解。因此c#提供了密封類,我們只需在父類前加上sealed修飾符,那這個類將不能被繼承了。密封方法也是在方法前加上sealed修飾符。

抽象類和密封類剛好相反,它是為繼承而生的。抽象類不能例項化,抽象方法沒有具體執行**,必須在非抽象的派生類中重寫。也就是基類並不實現任何執行**,只是進行定義。這一點和介面有相同的地方。

class program

}public abstract class people

public abstract void eat();

//有時候不想把類宣告為抽象類,但又想實現方法在基類裡不具體實現,

//而是想實現方法由派生類重寫。遇到這種情況時可使用virtual關鍵字將方法宣告為虛方法

public virtual void say()

}class man:people

public override void eat()

public override void say()

}

5.有引數的建構函式

class program

}public class people

}class man:people

}

C 繼承總結

繼承是物件導向程式設計中軟體重用的關鍵技術。繼承機制使用已定義的類作為基礎建立新的類定義,新的類是原有類的資料及操作與新類所增加的資料及操作的組合。新的類把原有的類作為基類引用,而不需要修改原有類的定義。新的類作為派生類引用。這種可擴充 可重用技術大大降低了大型軟體的開發難度。c 中描述類繼承關係的...

C 繼承總結

一 基類和派生類 類繼承關係的語法形式 class 派生類名 基類名錶 資料成員和成員函式說明 其中,基類名錶 的語句格式如下 訪問控制 基類名1,訪問控制 基類名2,訪問控制 是表示繼承許可權的關鍵字,稱為訪問描述符。可以是 如果省略訪問描述符,則c 認為是私有繼承。如果用關鍵字struct 而不...

C 繼承總結

繼承概念 在原有的類不變的基礎之上,新增一些函式,對功能進行拓展 繼承特點 是物件導向程式設計的的層次結構 是實現由簡單到複雜的認知過程 基類 被繼承的類 派生類 在繼承之後產生的新類 例子 手機系統會不斷更新,然而,我們的手機更新之後的功能只是對原來的功能進行優化和新增 繼承格式 派生類名 繼承許...