C#類之間存在繼承關係,什麼是繼承?如何實現類與類之間的繼承?

2020-12-20 一都編程

C#核心開發-15單元-接口和繼承-1節:繼承

C#核心開發-接口和繼承

1. 繼承

現實生活當中,存在很多與繼承相關的現象,如下圖所示:

繼承現象-圖1

圖1說明如下:

(1). 父子關係是最容易理解的,子繼承父親的家產,也就是父親的錢成了兒子的錢了,兒子可以使用父親的錢。

(2). 汽車是個大分類,所有轎車和SUV都具有汽車的特徵,如4個輪子,2個後視鏡,1個方向盤。

(3). 轎車和SUV再向下分類,細分到具體的車型。

(4). 車型還可以繼續向下分類。

(5). 轎車和SUV都具有汽車的特徵,但汽車不一定具備轎車和SUV的特徵。

在C#中,可以簡單地將繼承理解為:大分類和小分類之間存在的關係,小分類具有大分類所有的特徵,但大分類不一定具備所有小分類的特徵。

將現實生活當中的繼承與C#語言中的繼承對應起來就是:指一個對象(轎車)直接使用另一對象(汽車)的屬性和方法。

2. 基類

在C#中,基類就是被繼承的類,也可以理解為父類,一個父類可以有多個子類。

C#基類就是汽車,而轎車/SUV/寶馬X3/蒙迪歐等都是子類,是相對存在的。

基類的定義,與普通類是一樣的,當它還沒有被繼承時,就是一個普通類。

如下C#代碼定義的基類:

C#基類的定義-圖2

定義C#基類的代碼如下:

namespace Yidosoft.Edu.Csharp.Inherit{///<summary>/// 基類:人類///</summary>publicclassPerson{}}

在圖2中,我們規劃的是Person為基類,將來要被其它子類繼承的,所以稱為基類,任何類都可以稱為基類。

現在我們為C#基類Person添加一些公有的屬性:

C#基類添加屬性-圖3

在C#基類中編寫如下屬性:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Yidosoft.Edu.Csharp.Inherit{///<summary>/// 基類:人類///</summary>publicclassPerson{//姓名protectedstring Name { get; set; }//年齡publicint Age { get; set; }//性別publicbool Sex { get; set; }}}

在圖3中,為Person類添加了3個屬性,這3個屬性是所有人都具有的特徵。

根據業務需求,我們要將公共有屬性/方法等抽出來編寫在基類中,以達到相同功能公用,以達到共享的目的。

3. 派生類

C#派生類是與基類相對應的,也稱為子類,子類與父類相對應,只是叫法不一樣而已,微軟官方的叫法是基類與派生類。

C#派生類是要繼承基類的,派生類也是一個普通類,但只要繼承了基類,就變成了派生類。

下面創建一個Student類,繼承Person基類:

實現繼承關係-圖4

C#子類繼承基類代碼如下:

namespace Yidosoft.Edu.Csharp.Inherit{///<summary>/// 派生類:學生類///</summary>publicclassStudent : Person{}}

在C#中,派生類繼承基類說明如下:

(1). 使用英文的冒號:實現繼承關係,冒號後面的是基類,前面的是子類。

(2). 一個派生類只能繼承一個基類,但可以繼承多個接口(後面會講)。

(3). 一個基類可以被多個子類繼承。

(4). 使用繼承可以提高代碼的復用率。

在圖4中,Person是基類(父類),Student是派生類(子類),通過冒號實現它們之間的繼承關係。

相關焦點

  • 淺析java繼承與多態,抽象類與接口的區別
    而面向對象的基本特性就是封裝、繼承、與多態。一、繼承extends 關鍵字表示繼承某個已存在的類,已存在的類稱為「超類」、「基類」、或「父類」,而新繼承的類稱為「子類」、「派生類」。子類可以方法父類中的所有非 private 域,也即子類通過繼承獲得了父類具有的特性和能力。
  • 使用Python Super()為類提供繼承支持
    但是,代碼並不反映這種關係,因此具有基本上重複的代碼。通過使用繼承,您可以減少寫入的代碼量,同時反映矩形和正方形之間的真實世界關係:當你運行它時,即使你的Square類沒有顯式地實現它,對.area()的調用將使用超類中的.area()方法並列印16. Square類從Rectangle繼承.area() 方法。注意:要了解有關Python中繼承和面向對象概念的更多信息,請務必在Python 3中查看面向對象編程(OOP)。super()能為你做什麼?
  • python 類的繼承和派生
    什麼是繼承繼承是一種創建類的方法,在python中,一個類可以繼承來自一個或多個父類。原始類稱為基類或超類。__bases__(<class '__main__.ParentClass1'>, <class '__main__.ParentClass2'>)什麼時候用繼承假如已經有幾個類,而類與類之間有共同的變量屬性和函數屬性,那就可以把這幾個變量屬性和函數屬性提取出來作為基類的屬性。
  • Python類(4)類的繼承
    Python類(4)類的繼承類的繼承格式class 子類(基類): pass基類(父類): 被繼承者(先輩
  • c# 基礎之繼承
    在 C# 語言中僅支持單重繼承,主要用於解決代碼的重用問題。為了將繼承關係靈活運用到程序設計中,在 C# 語言中提供了接口來解決多重繼承的關係。在編程中靈活地使用類之間的繼承關係能很好地實現類中成員的重用,有利於類的使用。- C# 繼承的特點派生類是對基類的擴展,派生類可以添加新的成員,但不能移除已經繼承的成員的定義。
  • Python類的概念、定義、屬性、繼承
    早期的計算機編程是基於面向過程的方法,例如實現算術運算1+1+2 = 4,通過設計一個算法就可以解決當時的問題。隨著計算機技術的不斷提高,計算機被用於解決越來越複雜的問題。通過面向對象的方式,將現實世界的事物抽象成對象,現實世界中的關係抽象成類、繼承。通過面向對象的方法,更利於用人理解的方式,對複雜系統進行分析、設計與編程。同時也提高了系統的可維護性,可擴展性,可重用性。
  • python中類的繼承和多態
    類的繼承類繼承語法:Class 派生類名(基類名): #基類名寫在括號裡派生類成員在繼承關係中,已有的,設計好的類稱為父類或基類,新設計的類稱為子類或派生類。派生類可以繼承父類的公有成員,但是不能繼承其私有成員。
  • Java之接口之間的多繼承
    各位小夥伴們大家好,這次小編要介紹的是Java當中,接口的多繼承。具體如下:1.類與類之間是單繼承的,直接父類只有一個。2.類與接口之間是多實現的,一個類可以實現多個接口。3.接口與接口之間是多繼承的。注意事項:1.多個父接口之間的抽象方法可以重複。
  • Python中的類繼承
    歡迎關注 「小白玩轉Python」,發現更多 「有趣」繼承是面向對象編程中的一個概念,現有的類可以被一個新的類修改。現有的類稱為基類,新類稱為派生類。在本文中,我們將討論python中的類繼承。讓我們開始吧!
  • Python中你不知道的事:多繼承和類的方法,以及什麼是類的特殊方法
    認識一下什麼是多繼承還有魔法方法.開發工具:IDLE (Python 3.7 64-bit或者32-bit) , pycharm(professional的版本)(註:不需要3.7版本的也行,只需要Python3的版本都可以,在語法方面沒有什麼不同。)
  • Python 實例:類的繼承與重載
    object基類的類(新類和經典類的區別就在於是否繼承於object類)。(1)類的繼承先來看Python類(新類)的繼承。使用一個最簡單的類和object類來比較一下。打開Putty,連接到Linux。
  • C 語言如何實現繼承與容器
    如果文中有不對的地方,還請各位朋友能及時地給我指出來,我將不勝感激,謝謝~繼承的概念繼承是面向對象軟體技術當中的一個概念,與多態、封裝共為面向對象的三個基本特徵。繼承可以使得子類具有父類的屬性和方法或者重新定義,追加屬性和方法。面向對象中的重要概念就是類,在我們熟知的程式語言 C++ 、Python 中都存在類的概念,通過現有的類從而繼承得到新的類。
  • C++ 類、繼承、重載《Rice C++ 學習開發》
    要讓代碼實現《高內聚、低耦合》,這樣寫代碼才比較有意義。工作一年後,發現讀大學的時候,做項目的代碼感覺就像一坨shi一樣。只要想到什麼就寫什麼,完全沒有代碼復用的概念。C++基礎知識說明,如果你學過C語言,那麼基礎知識是一樣的,比循環、運算符、指針等…。可以說C++是在C的基礎上增加了面向對象編程。
  • 第76p,單繼承與多繼承,多繼承的問題
    一、什麼是繼承 繼承是一種新建子類的方式,新的子類會遺傳父類的一些特性,即父類中有的東西,子類中都能使用;類是為解決對象之間內容重複的問題,繼承是為解決類之間內容重複的問題; 在Python中支持多繼承和單繼承;新定義一個類,如果沒有任何繼承任何父類,則會默認繼承基類objetc;
  • c++虛繼承,多繼承
    在無繼承的類中,protected 和 private 控制符是沒有差別的,在繼承中,基類的 private 對所有的外界都屏蔽(包括自己的派生類), 基類的 protected 控制符對應用程式是屏蔽的, 但對其派生類是可訪問的。虛繼承什麼是虛繼承?它與一般的繼承有什麼不同?它有什麼用?
  • 【4】類的繼承和多態-簡易的Python面向對象教程
    面向對象(2) - 實例方法 (本文) 面向對象(3) - 類屬性和類方法 面向對象(4) - 繼承和多態,以及一個綜合小遊戲案例
  • JAVA繼承總結
    下雨後天氣變涼帶點小風,好不愜意啊而舒適的天氣裡幹些什麼合適呢當然是學Java啦!今天來講講JAVA繼承總結:       Java中的繼承作為Java面向對象三大特性之一,在知識點上而言,還是很多的,而且java的繼承與覆蓋基本是java筆試中常出的題,也比較繞。
  • 泛型:泛型的定義(類、接口、對象)、使用、繼承
    實現/繼承泛型接口/泛型類:    1) 定義泛型和使用泛型的概念:主要區別就是定義和使用         i. 那Java的方法做類比,Java的方法在定義的時候使用的都是形參(虛擬參數),但是在調用方法(使用方法)的時候必須傳入實參;         ii.
  • 繼承、接口與多態的相關問題
    Java中所有的類都是通過直接或間接地繼程java.lang.Object類得到的。繼承而得到的類稱為子類,被繼承的類稱為父類。子類不能繼承父類中訪問權限為private的成員變量和方法。子類可以重寫父類的方法,及命名與父類同名的成員變量。但Java不支持多重繼承,即一個類從多個超類派生的能力。
  • 淺析 Python 的類、繼承和多態
    繼承舉一個教科書中最常見的例子。Circle 和 Rectangle 繼承自 Shape,不同的圖形,面積(area)計算方式不同。is Circle.areaFalse通過類的字典更能明顯地看清這一點:>>> Shape.