C#面向对象(继承)

news2025/2/2 8:04:50

1.什么是继承

在 C# 编程语言中,继承是一个核心概念,它允许一个类(称为派生类)继承另一个类(称为基类)的成员,如方法、属性和其他成员。继承机制使得代码重用成为可能,简化了应用程序的创建和维护过程。

2.继承的基本概念

继承建立了一个属于(IS-A)关系,例如,狗是哺乳动物,哺乳动物是动物,因此狗也是动物。在 C# 中,继承是通过冒号(:)表示的,派生类在其声明中包含基类的名称

 class Dog
 {
     //基类成员
 }
 class Animal:Dog
 {
     //派生类成员
 }

派生类继承了基类的公共和受保护成员,但私有成员不会被继承。派生类可以有自己的成员,也可以重写基类的成员以提供新的实现

3.继承类的语法格式

派生类:基类

当一个类继承自另一个类的时候,子类将自动拥有父类的成员(成员变量和成员方法)

namespace 继承
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Kitty kitty = new Kitty();
            kitty.All();
            kitty.Sleep();
        }
    }
    //如果一个类没有继承任何类,那么默认他继承object,C#中所有的类,都直接或者间接继承自object,object是所有类的"终极基类"
    class Cat
    {
        public  string name { get; set; }
        public  double weight { get;set; }
        public Cat()
        {
            name = "kitty";
            weight = 5;
        }
        public void Speak()
        {
            Console.WriteLine("喵喵");
        }
        public void Sleep()
        {
            Console.WriteLine("睡觉");
        }
    }
    //Kitty 派生类
    //Cat  基类
    class Kitty:Cat
    {
        public int age {  get; set; }
        public string color {  get; set; }
        public Kitty()
        {
            age = 6;
            color = "橘黄";
        }
        public void Run()
        {
            Console.WriteLine("跑");
        }
        public virtual void All()
        {
            Console.WriteLine("体重:{0}",weight);
            Console.WriteLine("名字{0}",name);
            Console.WriteLine("年龄{0}",age);
            Console.WriteLine("颜色{0}",color);
        }
    }
}

4.继承的限制

C# 不支持多重继承,这意味着一个类只能有一个直接的基类。然而,C# 支持接口的多重继承,允许一个类实现多个接口。

5.继承的注意事项

  • 如果基类有参数化的构造函数,派生类必须显式定义构造函数,并使用 base 关键字调用基类的构造函数。

  • 派生类可以重写基类的方法,但基类的方法必须用 virtual 关键字标记为可重写。

  • 派生类可以添加自己独有的成员和方法,以实现更具体的功能。

继承是 C# 面向对象编程的一个强大特性,它提高了代码的可维护性和可重用性。通过继承,开发者可以构建灵活的类层次结构,使得新的类可以快速地利用现有的代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2289692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt事件处理:理解处理器、过滤器与事件系统

1. 事件 事件 是一个描述应用程序中、发生的某些事情的对象。 在 Qt 中,所有事件都继承自 QEvent ,并且每个事件都有特定的标识符,如:Qt::MouseButtonPress 代表鼠标按下事件。 每个事件对象包含该事件的所有相关信息&#xff…

为大模型提供webui界面的利器:Open WebUI 完全本地离线部署deepseek r1

为大模型提供webui界面的利器:Open WebUI Open WebUI的官网:🏡 Home | Open WebUI 开源代码:WeTab 新标签页 Open WebUI是一个可扩展、功能丰富、用户友好的自托管AI平台,旨在完全离线运行。它支持各种LLM运行程序&am…

17.1 图像操作

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 17.1.1 Image类 Image类为源自 Bitmap 和 Metafile 的类提供功能的抽象基类。 Image的属性大多数是只读的: FrameDim…

软件工程概论试题五

一、多选 1.好的软件的基本属性包括()。 A. 效率 B. 可依赖性和信息安全性 C. 可维护性 D.可接受性 正答:ABCD 2.软件工程的三要素是什么()? A. 结构化 B. 工具 C.面向对象 D.数据流! E.方法 F.过程 正答:BEF 3.下面中英文术语对照哪些是正确的、且是属…

深入解析“legit”的地道用法——从俚语到正式表达:Sam Altman用来形容DeepSeek: legit invigorating(真的令人振奋)

深入解析“legit”的地道用法——从俚语到正式表达 一、引言 在社交媒体、科技圈甚至日常对话中,我们经常会看到或听到“legit”这个词。比如最近 Sam Altman 在 X(原 Twitter)上发的一条帖子中写道: we will obviously deliver …

行业规范要当作业务实体画出来吗

第五元素 总觉得这些没有逻辑的实体,在绘制的时候不应该绘出来,他们没有责任啊。 比如以下:查阅规范 感觉不太对 UMLChina潘加宇 你这个规范是一个电脑系统还是一本书 第五元素 是书 UMLChina潘加宇 书没有智能,唯一暴露的接口是“翻”…

Cubemx文件系统挂载多设备

cubumx版本:6.13.0 芯片:STM32F407VET6 在上一篇文章中介绍了Cubemx的FATFS和SD卡的配置,由于SD卡使用的是SDIO通讯,因此具体驱动不需要自己实现,Cubemx中就可以直接配置然后生成SDIO的驱动,并将SD卡驱动和…

[Linux]从零开始的STM32MP157 U-Boot移植

一、前言 在上一次教程中,我们了解了STM32MP157的启动流程与安全启动机制。我们还将FSBL的相关代码移植成功了。大家还记得FSBL的下一个步骤是什么吗?没错,就是SSBL,而且常见的我们将SSBL作为存放U-Boot的地方。所以本次教程&…

前端 | 深入理解Promise

1. 引言 JavaScript 是一种单线程语言,这意味着它一次仅能执行一个任务。为了处理异步操作,JavaScript 提供了回调函数,但是随着项目处理并发任务的增加,回调地狱 (Callback Hell) 使异步代码很难维护。为此,ES6带来了…

【数据结构】_链表经典算法OJ:合并两个有序数组

目录 1. 题目描述及链接 2. 解题思路 3. 程序 3.1 第一版 3.2 第二版 1. 题目描述及链接 题目链接:21. 合并两个有序链表 - 力扣(LeetCode) 题目描述: 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给…

C++ 字母大小写转换两种方法统计数字字符的个数

目录 题目: 代码1: 代码2: 题目: 大家都知道一些办公软件有自动将字母转换为大写的功能。输入一个长度不超过 100 100 且不包括空格的字符串。要求将该字符串中的所有小写字母变成大写字母并输出。 输入格式 输入一行&#x…

终极版已激活!绿话纯净,打开即用!!!

今天我想和大家聊聊一个非常实用的工具——视频转换大师最终版。 视频转换大师终极版,堪称一款全能型的视频制作神器,集视频转换与编辑功能于一体。它搭载的视频增强器技术,能够最大限度地保留原始视频质量,甚至还能实现质量的进…

【2025年最新版】Java JDK安装、环境配置教程 (图文非常详细)

文章目录 【2025年最新版】Java JDK安装、环境配置教程 (图文非常详细)1. JDK介绍2. 下载 JDK3. 安装 JDK4. 配置环境变量5. 验证安装6. 创建并测试简单的 Java 程序6.1 创建 Java 程序:6.2 编译和运行程序:6.3 在显示或更改文件的…

C++ strcpy和strcat讲解

目录 一. strcpy 代码演示: 二.strcat 代码演示: 一. strcpy 使⽤字符数组可以存放字符串,但是字符数组能否直接赋值呢? ⽐如: char arr1[] "abcdef"; char arr2[20] {0}; arr2 arr1;//这样这节赋值可…

STM32 01 LED

一、点亮一个LED 在STC-ISP中单片机型号选择 STC89C52RC/LE52RC;如果没有找到hex文件(在objects文件夹下),在keil中options for target-output- 勾选 create hex file。 如果要修改编程 :重新编译-下载/编程-单片机重…

【图床配置】PicGO+Gitee方案

【图床配置】PicGOGitee方案 文章目录 【图床配置】PicGOGitee方案为啥要用图床图床是什么配置步骤下载安装PicGoPicGo配置创建Gitee仓库Typora中的设置 为啥要用图床 在Markdown中,图片默认是以路径的形式存在的,类似这样 可以看到这是本地路径&#x…

AI软件外包需要注意什么 外包开发AI软件的关键因素是什么 如何选择AI外包开发语言

1. 定义目标与需求 首先,要明确你希望AI智能体做什么。是自动化任务、数据分析、自然语言处理,还是其他功能?明确目标可以帮助你选择合适的技术和方法。 2. 选择开发平台与工具 开发AI智能体的软件时,你需要选择适合的编程语言、…

ArkTS语言介绍

文章目录 一、基本知识声明类型运算符语句函数函数声明可选参数Rest参数返回类型函数的作用域函数调用函数类型箭头函数(又名Lambda函数)闭包函数重载类字段方法构造函数可见性修饰符对象字面量抽象类接口接口属性接口继承抽象类和接口泛型类型和函数泛型类和接口泛型约束泛型…

基于 oneM2M 标准的空气质量监测系统的互操作性

论文标题 英文标题: Interoperability of Air Quality Monitoring Systems through the oneM2M Standard 中文标题: 基于 oneM2M 标准的空气质量监测系统的互操作性 作者信息 Jonnar Danielle Diosana, Gabriel Angelo Limlingan, Danielle Bryan Sor…

Flutter常用Widget小部件

小部件Widget是一个类,按照继承方式,分为无状态的StatelessWidget和有状态的StatefulWidget。 这里先创建一个简单的无状态的Text小部件。 Text文本Widget 文件:lib/app/app.dart。 import package:flutter/material.dart;class App exte…