C#核心(15)繼承中的構造函數

前言

我們之前學過構造函數是什么東西,今天的內容也和構造函數緊密相關,一個繼承了父親的子類里面構造函數的規則是什么樣的,今天內容很簡單,請聽我慢慢講來。

基本概念

特點:當申明一個子類時,先執行父類的構造函數,再執行子類的,也就是說,先構造出父親構造的特征,再構造兒子的特征。

  • 注意:父類的無參構造函數很重要
  • 子類可以通過base關鍵字代表父類,調用父類的構造函數

執行順序:爺——爹——兒——孫

子類實例化時,默認調用父類的無參構造函數

示例

博主寫了一個角色的基類提供使用。然后讓玩家和敵人都去繼承他,然后通過實現構造函數來讓你理解他的執行順序以及base關鍵詞的作用。

留給你們的任務就比較簡單了這次:希望你去寫一個無參構造函數然后為它寫一個子類,觀察一下構造的順序。

using System;// 角色基類
public class Character
{protected string name;protected int health;public Character(string name, int health){this.name = name;this.health = health;}public virtual void DisplayInfo(){Console.WriteLine($"Name: {name}\nHealth: {health}");}
}// 玩家類
public class Player : Character
{private int level;public Player(string name, int health, int level) : base(name, health)//通過base調用有參構造{this.level = level;}public override void DisplayInfo(){base.DisplayInfo();//調用父類里的方法Console.WriteLine($"Level: {level}");}
}// 敵人類
public class Enemy : Character
{private int damage;public Enemy(string name, int health, int damage) : base(name, health){this.damage = damage;}public override void DisplayInfo(){base.DisplayInfo();Console.WriteLine($"Damage: {damage}");}
}public class Program
{public static void Main(string[] args){Player player = new Player("John", 100, 5);player.DisplayInfo();Console.WriteLine();Enemy enemy = new Enemy("Goblin", 50, 10);enemy.DisplayInfo();}
}

總結

繼承中的構造函數,其實核心的知識點就只有一個,就是從大到小執行。

然后理解base關鍵字,這里的內容就算你是基本掌握了。

還是那句話,學習路上,腳踏實地。

請期待我的下一篇博客!

我來自佑夢游戲開發,感謝你的關注和收藏!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62251.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62251.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62251.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TVbox源貢獻指南

歡迎各路大佬踴躍提PR,分享爬蟲代碼。 源碼倉庫地址 https://github.com/lushunming/AndroidCatVodSpider 快速開始 本工程是一個完整的AndroidStudio工程,請你用AS打開編輯。 工程調試完畢后要需要導出生成jar文件配合軟件使用,執行根目…

FastAPI快速入門

文章目錄 了解FastAPI程序結構第一步,導入FastAPI第二步,創建一個app實例第三步,編寫一個 路徑操作裝飾器第五步、運行開發服務器uvicorn main:app --reload即可訪問api鏈接。符案例 聲明路徑參數聲明路徑參數的類型get請求查詢參數請求體如何…

云計算.運維.面試題

1、計算機能直接識別的語言( C )。 A、匯編語言 B、自然語言 C、機器語言 D、高級語言 2、應用軟件是指( D )。 A、所有能夠使用的軟件 B、能被各應用單位共同使用的某種軟件 C、所有計算機上都應使用的基本軟件D、專門為某一應用目的而編制的軟件 3、計算機的顯示器是一…

如何優雅地實現單例模式?內部靜態類還是雙重檢查鎖定?

在最近的一個項目中,我需要為一個核心配置類實現單例模式。在設計過程中,我發現要同時滿足延遲加載和線程安全這兩個要求,常見的實現方式有兩種:內部靜態類和雙重檢查鎖定(Double-Checked Locking, DCL)。 …

【計算機網絡】 —— 數據鏈路層(壹)

文章目錄 前言 一、概述 1. 基本概念 2. 數據鏈路層的三個主要問題 二、封裝成幀 1. 概念 2. 幀頭、幀尾的作用 3. 透明傳輸 4. 提高效率 三、差錯檢測 1. 概念 2. 奇偶校驗 3. 循環冗余校驗CRC 1. 步驟 2. 生成多項式 3. 例題 4. 總結 四、可靠傳輸 1. 基本…

golang實現簡單的redis服務

golang 手搓redis服務器倉庫地址:實現思路: golang 手搓redis服務器 倉庫地址: 倉庫: https://github.com/dengjiayue/my-redis.git 實現思路: ● 協議: tcp通信 ● 數據包: 長度(4byte)方法(1byte)數據json ● 數據處理: 單線程map讀寫 ○ 依次處理待處理隊列的請求(chan)…

智慧銀行反欺詐大數據管控平臺方案(八)

智慧銀行反欺詐大數據管控平臺的核心理念,在于通過整合先進的大數據技術、算法模型和人工智能技術,構建一個全面、智能、動態的反欺詐管理框架,以實現對金融交易的全方位監控、欺詐行為的精準識別和高效處理。這一理念強調數據驅動決策&#…

3D 生成重建019-LERF用文本在Nerf中開啟上帝之眼

3D 生成重建019-LERF用文本在Nerf中開啟上帝之眼 文章目錄 0 論文工作1 論文方法2 實驗結果 0 論文工作 人類利用自然語言描述物理世界,根據各種特性(視覺外觀、語義、抽象關聯)尋找具體的3D位置。在這項工作中,作者提出了語言嵌…

如何選擇合適的期刊投稿?從課題組經驗到在線工具的使用全解析

~~~本文是作者個人的經驗分享,建立在導師讓自己選刊的情況下~~~ 投稿選刊是科研過程中至關重要的一步,選刊過程可能讓許多初投稿的研究者感到迷茫和困惑:期刊那么多,如何找到最合適的? 本文將從多個角度介紹如何選擇投…

024、Docker與SSH在分布式系統中的實踐指南

1. Docker SSH配置最佳實踐 Docker容器通常不需要SSH服務來運行,因為它們設計為輕量級、無狀態的,并且通常通過Docker命令行界面與宿主機進行交互。但是,在某些情況下,您可能需要通過SSH訪問Docker容器進行調試、維護或其他操作。…

【kafka】消息隊列的認識,Kafka與RabbitMQ的簡單對比

什么是消息隊列? 消息隊列(Message Queue,簡稱 MQ)是一個在不同應用程序、系統或服務之間傳遞數據的機制。 它允許系統間異步地交換信息,而無需直接交互,確保消息的可靠傳輸。 想象一下,你正在…

.NET MAUI與.NET for Android/IOS的關系

2024年11月13日微軟發布了.Net9.0,我打算體驗一下。安裝好.Net9.0 SDK后發現Visual Studio識別不到9.0,但是通過命令行dotnet --info查看是正常的,后面看到了VS有版本可以升級,把VS升級到17.12.0就可以了。更新完打開以后看到如下界面 這里…

SqlDataAdapter

SqlDataAdapter 是 .NET Framework 和 .NET Core 中提供的一個數據適配器類,屬于 System.Data.SqlClient 命名空間(或在 .NET 6 中屬于 Microsoft.Data.SqlClient 命名空間)。它的作用是充當數據源(如 SQL Server 數據庫&#xff…

【vivado】時序報告--best時序和worst時序

利用vivado進行開發時,生成best時序報告和worst時序報告。 best時序報告 slow選擇min_max,fast選擇none。 worst時序報告 fast選擇min_max,slow選擇none。

FastAPI 響應狀態碼:管理和自定義 HTTP Status Code

FastAPI 響應狀態碼:管理和自定義 HTTP Status Code 本文介紹了如何在 FastAPI 中聲明、使用和修改 HTTP 狀態碼,涵蓋了常見的 HTTP 狀態碼分類,如信息響應(1xx)、成功狀態(2xx)、客戶端錯誤&a…

力扣題庫-擲骰子模擬詳細解析

題目如下: 有一個骰子模擬器會每次投擲的時候生成一個 1 到 6 的隨機數。 不過我們在使用它時有個約束,就是使得投擲骰子時,連續 擲出數字 i 的次數不能超過 rollMax[i](i 從 1 開始編號)。 現在,給你一…

深入淺出:PHP中的數據類型全解析

文章目錄 引言理解數據類型標量類型整數 (integer)浮點數 (float)布爾值 (boolean)字符串 (string) 復合類型數組 (array)對象 (object)資源 (resource)NULL 特殊類型Callable強制類型轉換 實戰案例總結與展望參考資料 引言 在編程的世界里,數據類型是構建任何應用…

當linux可執行文件缺少或者不兼容so庫時候,如何查看版本以及缺少那些庫

解決方法: ldd 命令來驗證程序是否加載了正確的庫: 如檢查linear_elasticity可執行文件缺少的庫,用下面命令: ldd linear_elasticity 可以發現下面not found就是缺少的庫,還有對應的庫的位置已經版本 $ ldd lin…

第P1周:Pytorch實現mnist手寫數字識別

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 目標 1. 實現pytorch環境配置 2. 實現mnist手寫數字識別 3. 自己寫幾個數字識別試試具體實現 (一)環境 語言環境:Python…

Seq2Seq模型的發展歷史;深層RNN結構為什么出現梯度消失/爆炸問題,Transformer為什么不會;Seq2Seq模型存在問題

目錄 Seq2Seq模型的發展歷史 改進不足的地方 深層RNN結構為什么出現梯度消失/爆炸問題,Transformer為什么不會 深層RNN結構為什么出現梯度消失/爆炸問題: Transformer為什么不會出現梯度消失/爆炸問題: Seq2Seq模型存在問題 T5模型介紹 Seq2Seq模型的發展歷史 序列到…