C# 抽象类、接口、多态、单向链表 完整讲解 + 代码示例
一、抽象类 abstract class1. 核心特点用abstract修饰不能实例化只能被继承可包含普通字段、普通方法、抽象方法无方法体、构造函数、属性派生类必须重写所有抽象成员用override单继承一个类只能继承一个抽象类有构造函数子类实例化时会先执行父抽象类构造示例代码csharp运行// 抽象动物父类 abstract class Animal { public string Name { get; set; } // 普通构造 public Animal(string name) { Name name; } // 抽象方法无实现子类必须重写 public abstract void Speak(); // 普通方法已有实现子类可重写可不重写 public void Run() { Console.WriteLine(${Name} 在奔跑); } } // 子类继承抽象类重写抽象方法 class Dog : Animal { public Dog(string name) : base(name) { } public override void Speak() { Console.WriteLine(${Name}汪汪汪); } } class Cat : Animal { public Cat(string name) : base(name) { } public override void Speak() { Console.WriteLine(${Name}喵喵喵); } }二、接口 interface1. 核心特点关键字interface不能实例化、无构造函数只能包含方法、属性、事件、索引器不能有字段、普通变量默认所有成员都是public不能加访问修饰符一个类可实现多个接口解决单继承局限接口成员必须全部实现用public重写C#8.0 接口可以写默认实现方法示例代码csharp运行// 会叫的接口 interface ISpeak { void Speak(); } // 会飞的接口 interface IFly { void Fly(); } // 鸟类同时实现两个接口 class Bird : ISpeak, IFly { public void Speak() { Console.WriteLine(叽叽叽); } public void Fly() { Console.WriteLine(小鸟展翅飞翔); } }抽象类 vs 接口对比表格特性抽象类 abstract接口 interface继承 / 实现单继承多实现字段可以有成员变量不能有字段构造函数有无访问修饰可 private/protected/public只能 public使用场景提取子类公共代码、有共同属性行为定义一套行为规范多类不相关也可实现三、多态 Polymorphism1. 两种多态编译时多态静态方法重载 Overload同一个类同名不同参数运行时多态动态核心方法重写 Override父类引用指向子类对象动态多态核心规则父类变量 new 子类 ();调用虚 / 抽象方法时执行子类重写后的逻辑多态完整演示结合上面抽象类csharp运行class Program { static void Main() { // 父类引用指向不同子类多态体现 Animal a1 new Dog(旺财); Animal a2 new Cat(橘猫); TestSpeak(a1); TestSpeak(a2); } // 统一接收父类自动执行子类方法 static void TestSpeak(Animal animal) { animal.Speak(); animal.Run(); } }输出plaintext旺财汪汪汪 旺财 在奔跑 橘猫喵喵喵 橘猫 在奔跑四、单向链表手写基础链表链表核心节点 Node 链表管理类节点存储数据 下一个节点地址链表记录头节点提供增删改查完整单向链表代码csharp运行// 链表节点 class NodeT { public T Data; // 存储数据 public NodeT Next; // 指向下一个节点 public Node(T data) { Data data; Next null; } } // 泛型单向链表 class SingleLinkListT { private NodeT head; // 头节点 public int Count { get; private set; } // 节点数量 // 尾部添加 public void Add(T data) { NodeT newNode new NodeT(data); if (head null) { head newNode; } else { NodeT temp head; while (temp.Next ! null) { temp temp.Next; } temp.Next newNode; } Count; } // 遍历打印所有元素 public void Show() { if (head null) { Console.WriteLine(链表为空); return; } NodeT temp head; while (temp ! null) { Console.Write(temp.Data ); temp temp.Next; } Console.WriteLine(); } // 根据值删除第一个匹配节点 public void Remove(T data) { if (head null) return; // 头节点就是目标 if (head.Data.Equals(data)) { head head.Next; Count--; return; } NodeT temp head; // 找到待删节点的前一个 while (temp.Next ! null !temp.Next.Data.Equals(data)) { temp temp.Next; } if (temp.Next null) return; temp.Next temp.Next.Next; Count--; } } // 测试 class Program { static void Main() { SingleLinkListint list new SingleLinkListint(); list.Add(10); list.Add(20); list.Add(30); list.Show(); // 10 20 30 list.Remove(20); list.Show(); // 10 30 Console.WriteLine(节点总数 list.Count); } }五、综合拓展接口 多态 链表结合思路定义IData接口规范数据行为多个实体类实现接口链表存储接口类型实现多态存放不同对象遍历链表时自动调用各自重写的方法

相关新闻

2026年6月23日科技热点新闻

2026年6月23日科技热点新闻

一、海外科技热点 1. SpaceX股价暴跌,市值单日蒸发近4000亿美元 6月23日,SpaceX收跌16.43%,跌破IPO首日收盘价,市值单日蒸发近4000亿美元,创下有史以来全球企业单日市值损失第二大的纪录。这是SpaceX上市后连续第三个交…

2026/6/24 4:17:55阅读更多 →
2000-2024年地级市碳不平等指标

2000-2024年地级市碳不平等指标

碳不平等,是衡量城市内部碳排放分布不均衡程度的重要指标,反映城市内各县(区)之间碳排放与人口规模匹配的公平性状况。在“双碳”目标与绿色转型背景下,碳排放的分布格局不仅涉及总量控制,更关乎区域公平与…

2026/6/24 4:17:55阅读更多 →
Claude Code + Kimi Code 配置指南

Claude Code + Kimi Code 配置指南

Claude Code Kimi Code 配置指南 核心要点 1. 端点必须和 Key 类型匹配 你的 Key 是 sk-kimi-... 格式,属于 Kimi Code 平台,只能用这个端点: export ANTHROPIC_BASE_URLhttps://api.kimi.com/coding/❌ 不要写成 https://api.moonshot.cn/a…

2026/6/24 4:12:54阅读更多 →
基于 Harmony 7.0 应用的时光轴应用首页实现

基于 Harmony 7.0 应用的时光轴应用首页实现

基于 Harmony 7.0 应用的时光轴应用首页实现 前言 人生是由一个个重要时刻串联而成的故事。从大学毕业到第一份工作,从结婚生子到买房置业,从第一次出国旅行到学会一项新技能——这些大事记构成了每个人的生命轨迹。一款好的时光轴工具,应该像…

2026/6/24 5:23:01阅读更多 →
C# 实现 HTTP 服务器

C# 实现 HTTP 服务器

目录 C# 实现 HTTP 服务器三种方案 方案 1:内置 HttpListener(零第三方库,轻量,Windows/Linux 跨平台) 完整示例 关键说明 方案 2:ASP.NET Core(工业级、推荐正式项目) 最简控…

2026/6/24 5:23:01阅读更多 →
翻译:《面向 JavaScript 开发人员的 Python》第一章:Python基础:从JS到Py

翻译:《面向 JavaScript 开发人员的 Python》第一章:Python基础:从JS到Py

Python基础:从JS到Py 欢迎来到精彩纷呈的 Python 世界!作为一名 JavaScript 开发者,您已经具备了扎实的编程基础。在本课中,我们将探讨 Python 的语法与 JavaScript 的异同,重点介绍它们的相似之处以及 Python 的独特之…

2026/6/24 5:23:01阅读更多 →
Python 高级编程 021:__dict__与dir()的深度解析

Python 高级编程 021:__dict__与dir()的深度解析

Python 高级编程 021:__dict__与dir的深度解析Bilibili 同步视频一、先搭舞台:一个简单的继承示例二、__dict__:对象属性的 “存储字典”1. 底层核心:高性能的内置数据结构2. 实例的 __dict__:只存自身实例属性3. 类的…

2026/6/24 5:23:01阅读更多 →
【测试方案_MDIO】快速掌握以太网PHY MDIO测试

【测试方案_MDIO】快速掌握以太网PHY MDIO测试

目录 1. MDIO概述 2. MDIO工作原理 2.1. MDIO引脚定义 2.2. MDIO协议 2.2.1. MDIO读写区分 2.2.2. MDIO帧结构 2.2.2.1. Clause-22帧结构 2.2.2.2. Clause-45帧结构 2.2.3. MDIO读写时序 2.2.3.1. 写操作时序(WRITE OP=01) 2.2.3.2. 读操作时序(READ OP=10) 2.2.…

2026/6/24 5:23:01阅读更多 →
基于U2-Net与深度度量学习的自动化花粉显微图像分析系统实践

基于U2-Net与深度度量学习的自动化花粉显微图像分析系统实践

1. 项目概述与核心价值最近在做一个挺有意思的项目,核心目标是想办法让计算机能自动识别和统计显微镜下的花粉。这听起来好像是个小众需求,但其实在植物学、农业、环境监测甚至法医鉴定领域,这都是个让人头疼的体力活。想象一下,研…

2026/6/24 5:18:01阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/23 7:04:52阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/24 2:12:09阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/23 5:55:37阅读更多 →
TaskJuggler脚本编程入门:用代码实现自动化项目管理

TaskJuggler脚本编程入门:用代码实现自动化项目管理

TaskJuggler脚本编程入门:用代码实现自动化项目管理 【免费下载链接】TaskJuggler TaskJuggler - Project Management beyond Gantt chart drawing 项目地址: https://gitcode.com/gh_mirrors/ta/TaskJuggler TaskJuggler是一款强大的开源项目管理工具&#…

2026/6/24 0:02:41阅读更多 →
终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果

终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果

终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果 【免费下载链接】angular-mobile-nav An angular navigation service for mobile applications 项目地址: https://gitcode.com/gh_mirrors/an/angular-mobile-nav angular-mobile-nav是一款专为…

2026/6/24 0:02:41阅读更多 →
Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作

Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作

Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作 【免费下载链接】Wan2.1-Fun-V1.1-1.3B-InP 项目地址: https://ai.gitcode.com/hf_mirrors/PAI/Wan2.1-Fun-V1.1-1.3B-InP Wan2.1-Fun-V1.1-1.3B-InP是一款强大的AI视频创作工具,…

2026/6/24 0:02:41阅读更多 →