C# 類和繼承(抽象類)

抽象類

抽象類是指設計為被繼承的類。抽象類只能被用作其他類的基類。

  • 不能創建抽象類的實例。
  • 抽象類使用abstract修飾符聲明。

image

  • 抽象類可以包含抽象成員或普通的非抽象成員。抽象類的成員可以是抽象成員和普通帶
    實現的成員的任意組合。
  • 抽象類自己可以派生自另一個抽象類。例如,下面的代碼展示了一個抽象類,它派生自
    另一個抽象類。

image

  • 任何派生自抽象類的類必須使用override關鍵字實現該類所有的抽象成員,除非派生類
    自己也是抽象類。

抽象類抽象方法的示例

下面的代碼展示了一個名為AbClass的抽象類,它有兩個方法。
第一個方法是一個帶有實現的普通方法,它打印出類型的名稱。第二個方法是一個必須在派
生類中實現的抽象方法。類DerivedClass繼承AbClass,實現并覆寫了抽象方法。創建
DerivedClass的對象并調用它的兩個方法。

abstract class AbClass    //抽象類
{public void IdentifyBase()  //普通方法{Console.WriteLine("I am AbClass");}abstract public void IdentifyBase();  //抽象方法
}class DerivedClass:AbClass   //派生類
{override public void IdentifyDerived()   //抽象方法的實現{Console.WriteLine("I am DerivedClass");}
}class Program
{static void Main(){//AbClass  a=new AbClass();   //錯誤,抽象類不能實例化//a.IdentifyDerived();DerivedClass b=new DerivedClass();//實例化派生類b.IdentifyBase();                 //調用繼承的方法b.IdentifyDerived();              //調用“抽象”ff}
}

輸出結果:

I am AbClass
I am DerivedClass

抽象類的另一個例子

如下代碼演示了包含數據成員和函數成員的抽象類的聲明。記住,數據成員(字段和常量)
不可以聲明為abstract。

abstract class MyBase  //抽象和非抽象成員的組合
{public int SideLength=10;    //數據成員const int TriangleSideCount=3;  //數據成員abstract public void PrintStuff(string s);  //抽象方法abstract public int MyInt{get;set;}         //抽象屬性public int PerimeterLength()   //普通的非抽象方法{return TriangleSideCount*SideLength;}
}class MyClass:MyBase
{public override void PrintStuff(string s)   //覆蓋抽象方法{Console.WriteLine(s);}private int _myInt;public override int MyInt  //覆蓋抽象屬性{get{return _myInt;}set{_myInt=value;}}
}class Program
{static void Main(string[] args){MyClass mc=new MyClass();mc.PrintStuff("This is a string.");mc.MyInt=28;Console.WriteLine(mc.MyInt);Console.WriteLine($"Perimeter Length:{mc.PerimeterLength()}")}
}

運行結果

This is a string
28
Perimeter Length:30

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

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

相關文章

關于臟讀,幻讀,可重復讀的學習

mysql 可以查詢當前事務隔離級別 默認是RR repeatable-read 如果要測臟讀 要配成未提交讀 RU 讀到了未提交的數據。 3.演示不可重復讀 要改成提交讀 RC 這個是指事務還未結束,其他事務修改了值。導致我兩次讀的不一樣。 4.RR–可以解決不可重復讀 小總結&…

華為云Astro中服務編排、自定義模型,頁面表格之間有什么關系?如何連接起來?如何操作?

目錄 一、核心關系解析 二、連接方式與操作步驟 (一)服務編排與自定義模型的連接 (二)自定義模型與頁面表格的連接 (三)服務編排與頁面表格的連接 三、操作示例:構建數據處理閉環 場景:用戶在頁面表格中修改設備信息,觸發服務編排校驗數據并更新數據庫。 四、…

Docker鏡像無法拉取問題解決辦法

最近再學習RabbitMQ,需要從Docker鏡像中拉取rabbitMQ,但是下拉失敗 總的來說就是無法和docker鏡像遠程倉庫建立連接 我又去嘗試ping docker.io發現根本沒有反應,還是無法連接找了許多辦法還是沒有辦法解決,最后才發現是鏡像問題&a…

向 AI Search 邁進,騰訊云 ES 自研 v-pack 向量增強插件揭秘

作者:來自騰訊云劉忠奇 2025 年 1 月,騰訊云 ES 團隊上線了 Elasticsearch 8.16.1 AI 搜索增強版,此發布版本重點提升了向量搜索、混合搜索的能力,為 RAG 類的 AI Search 場景保駕護航。除了緊跟 ES 官方在向量搜索上的大幅優化動…

electron-vite串口通信

一、構建項目后,安裝“串口通信庫” npm install serialport二、設置 npm install --save-dev electron-rebuild ./node_modules/.bin/electron-rebuild 注意:如果執行報錯以下問題 1、未配置python變量 2、沒有Microsoft Visual Studio BuildTools 3…

Cisco IOS XE WLC 任意文件上傳漏洞復現(CVE-2025-20188)

免責申明: 本文所描述的漏洞及其復現步驟僅供網絡安全研究與教育目的使用。任何人不得將本文提供的信息用于非法目的或未經授權的系統測試。作者不對任何由于使用本文信息而導致的直接或間接損害承擔責任。如涉及侵權,請及時與我們聯系,我們將盡快處理并刪除相關內容。 前…

從 iPhone 備份照片: 保存iPhone圖片的5種方法

隨著智能手機越來越融入我們的生活,我們的照片已成為我們設備上最有價值的數據形式之一。然而,iPhone內部存儲空間仍然有限,因此我們需要將iPhone中的照片備份到另一個地方,以釋放空間并確保珍貴的圖像記憶的安全。閱讀本指南&…

Ubuntu崩潰修復方案

當Ubuntu系統崩潰時,可依據崩潰類型(啟動失敗、運行時崩潰、完全無響應)選擇以下修復方案。以下方法綜合了官方推薦和社區實踐,按操作風險由低到高排序: 一、恢復模式(Recovery Mode) 適用場景??:系統啟動卡頓、登錄后黑屏、軟件包損壞等。 ??操作步驟??: ?…

免費批量文件重命名工具

免費批量文件重命名工具 🌐 網站: 免費批量文件重命名工具 📌 工具簡介 一款功能強大的批量文件重命名工具,支持多種重命名方式,操作簡單,完全免費! 🚀 主要功能 功能描述自定義重命名直接輸…

VR博物館推動現代數字化科技博物館

VR博物館:推動現代數字化科博館新篇章 隨著科技的飛速發展,虛擬現實(Virtual Reality, VR)技術已經逐漸滲透到我們生活的方方面面,其中,VR博物館作為現代數字化科博館的重要形式之一,以獨特的優…

COMSOL與MATLAB聯合仿真人工智能的電學層析成像系統

關鍵詞:MATLAB,電學層析成像,人工智能,圖像重建,深度學習 一、引言 基于人工智能的電學層析成像系統是一種創新的檢測技術,結合了電學層析成像技術與人工智能算法的優勢。電學層析成像技術,簡…

【Latex】Windows/Ubuntu 繪制 eps 矢量圖通用方法(drawio),支持插入 Latex 數學公式

一直感覺 Visio 或者 PPT 中 Mathtype 對 latex 公式渲染效果不好,且在 Ubuntu 下的支持不好,最近重新調研發現一個好用的工具 drawio。 在線使用 https://app.diagrams.net/?srcabout 也有桌面版的應用,Windows 就下載 exe 安裝器&#x…

selenium自動化測試學習心得1

1. 關于測試用例的順序 首先在你測試的主類上面寫TestMethodOrder(MethodOrderer.OrderAnnotation.class) 然后在測試用例上面, 寫Order(),里面的數字越小,測試的優先級越大 2. 關于getText()和getAttribute("innerText") getText() 是 Selenium 方法,…

Spring AI 結合DeepSeek使用教程

Spring AI 結合DeepSeek使用教程 一、環境搭建與項目初始化 創建Spring Boot項目 使用IDEA或Spring Initializr創建項目,選擇JDK 17或更高版本(推薦21)。勾選依賴項:Spring Web、Lombok,Maven或Gradle作為構建工具。添…

Android 布局優化:掌握 <include> 與 <merge> 的實戰技巧

引言 在 Android 開發中&#xff0c;布局文件是 UI 設計的核心載體&#xff0c;但隨著項目復雜度增加&#xff0c;布局冗余、嵌套層級過深等問題會導致性能下降。本文將通過 代碼級實戰示例&#xff0c;詳細解析如何利用 <include> 和 <merge> 標簽優化布局&#…

【storage】

文章目錄 1、RAM and ROM2、DRAM and SRAM2、Flash Memory&#xff08;閃存&#xff09;4、DDR and SPI NOR Flash5、eMMC6、SPI NOR vs SPI NAND vs eMMC vs SD附錄——prototype and demo board附錄——U盤、SD卡、TF卡、SSD參考 1、RAM and ROM RAM&#xff08;Random Acce…

Python異步編程-協程

1、引言 在使用多個爬蟲腳本進行數據爬取和調用大語言模型返回結果的場景中&#xff0c;涉及到大量的網絡IO操作。協程能夠讓網絡IO操作并發執行&#xff0c;極大地提升程序的運行效率。在智能體相關的開源項目中&#xff0c;我們也可以經常看到協程的身影。 2、協程 協程&a…

大語言模型提示詞(LLM Prompt)工程系統性學習指南:從理論基礎到實戰應用的完整體系

文章目錄 前言&#xff1a;為什么提示詞工程成為AI時代的核心技能一、提示詞的本質探源&#xff1a;認知科學與邏輯學的理論基礎1.1 認知科學視角下的提示詞本質信息處理理論的深層機制圖式理論的實際應用認知負荷理論的優化策略 1.2 邏輯學框架下的提示詞架構形式邏輯的三段論…

Android音頻開發:Speex固定幀與變長幀編解碼深度解析

引言 在Android音頻開發領域&#xff0c;Speex作為一種開源的語音編解碼器&#xff0c;因其優秀的窄帶語音壓縮能力被廣泛應用。在實際開發中&#xff0c;幀處理策略的選擇直接影響著音頻傳輸質量、帶寬占用和系統資源消耗。本文將深入探討Speex編解碼中固定幀與變長幀的實現差…

Docke啟動Ktransformers部署Qwen3MOE模型實戰與性能測試

docker運行Ktransformers部署Qwen3MOE模型實戰及 性能測試 最開始拉取ktransformers:v0.3.1-AVX512版本&#xff0c;發現無論如何都啟動不了大模型&#xff0c;后來發現是cpu不支持avx512指令集。 由于本地cpu不支持amx指令集&#xff0c;因此下載avx2版本鏡像&#xff1a; …