C#学习05-类简介与派生继承

2023-11-12

基本概念

类是一种数据结构,它可以包含数据成员,函数成员以及嵌套类型。

C#中类的声明

C#中类的声明即定义,不同于c++中声明与定义是分开的。

C#类构造函数

类的 构造函数 是类的一个特殊的成员函数,当创建类的新对象时执行。

构造函数的名称与类的名称完全相同,它没有任何返回类型。

public myClass(){}

C#类析构函数

类的 析构函数 是类的一个特殊的成员函数,当类的对象超出范围时执行。

析构函数的名称是在类的名称前加上一个波浪形(~)作为前缀,它不返回值,也不带任何参数。

析构函数用于在结束程序(比如关闭文件、释放内存等)之前释放资源。析构函数不能继承或重载。

public ~myClass(){}

C#类静态成员

可以使用 static 关键字把类成员定义为静态的。当声明一个类成员为静态时,意味着无论有多少个类的对象被创建,只会有一个该静态成员的副本。

public static int num;

C#访问修饰符

C# 封装根据具体的需要,设置使用者的访问权限,访问修饰符定义了一个类成员的范围和可见性。
以下为C#中访问修饰符(顺序依照可访问范围大小)
1)public:项目中所有对象都可以访问。
2)internal:同一个程序集的对象可以访问,类在声明时不加关键字默认为internal。
3)protected:只有该类对象及其子类对象可以访问。
4)private:对象本身在对象内部可以访问,类中数据成员不加关键字默认为private。

C#类的继承和派生
当创建一个类时,程序员不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这个已有的类被称为的基类,这个新的类被称为派生类。

派生类继承了基类的成员变量和成员方法。因此父类对象应在子类对象创建之前被创建。

派生类可以重写不带参数的构造函数。

class Vehicle
    {
        public Vehicle()
        {
            this.Myname = "Vehicle";
        }
        public String Myname { get; set; }
    }
    class Car : Vehicle
    {
        public Car()
        {
            this.Myname = "Car";
        }
    }

Vehicle vehicle = new Car();
Console.WriteLine(vehicle.Myname);

输出结果
派生类重写参数构造函数。

class Vehicle
    {
        public Vehicle(string name)
        {
            this.Myname = name;
        }
        public String Myname { get; set; }
    }
    class Car : Vehicle
    {
        public Car(string name):base(name)
        {
            this.Myname = name;
        }
    }

Vehicle vehicle = new Car("Car");
Console.WriteLine(vehicle.Myname);

C# 多重继承
多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能。与单一继承相对,单一继承指一个类别只可以继承自一个父类。

C# 不支持多重继承。但是可以使用接口来实现多重继承。

class Vehicle//基类
    {
        public void CreateVehicle()
        {
            Console.WriteLine("CreateVehicle");
        }
    }
    public interface CarTool//接口
    {
        void CreatCar();
    }
    class Car : Vehicle, CarTool//派生类
    {
        public void CreatCar()
        {
            Console.WriteLine("CreatCar");
        }
    }
    Car car = new Car();
    car.CreateVehicle();
    car.CreatCar();

在这里插入图片描述

补充
1)在class前加关键字sealad,指类无法被继承。
2)每个子类只支持一个基类。
3)子类的访问级别不能大于父类。
4)base关键字只能访问上一级的父类。

资料来源:
https://www.runoob.com/csharp/csharp-inheritance.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#学习05-类简介与派生继承 的相关文章

  • 在C语言中使用“void”

    我很困惑为什么我们需要通过void转换为 C 函数 int f void return 0 versus int f return 0 什么是正确的做法以及为什么 In C int f 是一种老式的声明 它说f需要固定但未指定数量和类型的参
  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • asp.net 文本框文本模式数字,仅允许数字

    我只是想知道 ASP NET 中是否有一种方法只允许文本框中的数字textmode number 当我使用这个时
  • 如何创建可以像 UserControl 一样编辑的 TabPage 子类?

    我想创建一个包含一些控件的 TabPage 子类 并且我想通过设计器来控制这些控件的布局和属性 但是 如果我在设计器中打开子类 我将无法像在 UserControl 上那样定位它们 我不想创建一个带有 UserControl 实例的 Tab
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 即使手动设置显示环境变量后,WSL Ubuntu 也会显示“错误:无法打开显示”

    我在 WSL Ubuntu 上使用 g 我使用 git 克隆了 GLFW 存储库 使用了ccmake命令配置并生成二进制文件 然后使用make在 build 目录中最终创建 a文件 我安装了所有OpenGL相关的库 usr ld 我不记得我
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 尚未处理时调用 Form 的 Invoke 时出现 ObjectDisposeException

    我们得到一个ObjectDisposedException从一个电话到Invoke在尚未处理的表格上 这是一些演示该问题的示例代码 public partial class Form2 Form void Form2 Load object
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • 我在在线程序挑战编译器中遇到演示错误

    include
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 带重定向标准流的 C# + telnet 进程立即退出

    我正在尝试用 C 做一个 脚本化 telnet 项目 有点类似于Tcl期望 http expect nist gov 我需要为其启动 telnet 进程并重定向 和处理 其 stdin stdout 流 问题是 生成的 telnet 进程在
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop

随机推荐

  • Linux发布Spring Boot项目

    文章目录 Linux发布Spring Boot项目 一 CentOS7虚拟机环境 1 清理后打包项目 2 上传jar到Linux中 3 查看IP 4 关闭防火墙 5 运行jar包 6 浏览器访问 二 真实服务器环境 4 需要开启端口 三 后
  • linux sed -i replace text/sed 跟expression替换文本

    1 生成测试文本 peng peng cat gt aa txt aa bb cc dd ee C 2 原本的方案 用vi替换文本 aa替换成abc s aa abc 3 用sed命令替换文本 replace aa with abc at
  • 交换两个变量的值(包括字符串的交换)

    例 交换两个变量的值 输入两个整型变量a和b 设计一个交换函数将其交换后再输出 注意 不能直接输出b和a 错误代码 include
  • 适配任何数据结构的异步Excel生成(企业级开发)

    文章目录 前言 一 Java操作Excel的基础知识 二 测试准备 三 实现源码 四 功能测试 总结 源码 前言 背景 由于公司的excel生成过于缓慢 有时生成一个excel文件需要等待几十秒甚至几分钟 在等待的时候用户不能跳转其他页面
  • YOLOv4:目标检测的最佳速度和精度

    YOLOv4 目标检测的最佳速度和精度 摘要 随着深度学习的发展 目前已经出现了很多算法 或者训练技巧 tricks 来提升神经网络的准确率 在实际测试中评价一个算法的好坏优劣主要看两点 一是能否在大规模的数据集中起作用 work 二是是否
  • 机器人教育培养孩子的逻辑思维

    孩子拥有好的思维逻辑 是每个父母梦寐以求的 怎样锻炼孩子的思维逻辑能力 也是每个父母头疼的事情 格物斯坦小坦克想说 其实培养孩子的思维能力是有迹可循的 了解顺序概念 事物按照大小 硬软 胖瘦等会有一个顺序 如小朋友们有时候会按高矮站队 这些
  • 华为OD机试-机器人走迷宫

    题目描述 机器人走一个迷宫 给出迷宫的x和y x y的迷宫 并且迷宫中有障碍物 输入k表示障碍物有k个 并且会将障碍物的坐标挨个输入 机器人从0 0的位置走到x y的位置并且只能向x y增加的方向走 不能回退 如代码类注释展示的样子 表示可
  • 因果4-因果模型

    上一章我们从统计学角度学习了贝叶斯网络中点与点的关系 并没有真正涉及因果的重要内容 因为基于的都是条件概率 没有牵扯到干预 而干预是因果很重要的操作 这一章我们从干预开始 进一步学习如何识别因果图中的因果量 首先让我们回顾并正式定义第一章中
  • 【2021】最新的ECMAScript标准定义了8种数据类型

    最新的ECMAScript标准定义了8种数据类型 一 七种基本数据类型 Boolean Null Undefined Number String Symbol ES6新增 一种实例是唯一且不可改变的数据类型 Bigint 任意精度的整数 可
  • CiteSpace可视化出图:制作聚类图、时间线图、时区图、Landscape视图、地理可视化图等多种可视化绘制。

    CiteSpace 是一款优秀的文献计量学软件 能够将文献之间的关系以科学知识图谱的方式可视化的展现在操作者面前 科研人员 多多少少都会用到一些 但是 CiteSpace 是基于 Java 开发 旧版本需要安装 Java 运行环境才能使用
  • ADC误差

    本文转载自 http blog csdn net tianhen791 article details 38736217 动态测试关注的是器件的传输和性能特征 即采样和重现时序变化信号的能力 相比之下 线性测试关注的则是器件内部电路的误差
  • IntelliJ IDEA和Eclipse快捷键对比总结

    IntelliJ IDEA和Eclipse快捷键对比总结 Eclipse Oxygen Release 4 7 0 IntelliJ IDEA 2017 3 4 Ultimate Edition 提醒一点 需要注意和其他软件的热键冲突 比如
  • opencore 启动总是在win_刷黑苹果之后无法进入BIOS设置opencore

    子方有话 子方的配置是是华硕B450MK AMD R5 2600 GT710 在完成子方黑苹果系统的安装后 子方把引导转到了硬盘 没几次后 子方发现无法进入BIOS设置 不过可以通过F8键进入启动设置 选择启动windows 但不管通过什么
  • SpringBoot集成redis(3)

    SpringBoot集成redis 3 Redisson方式实现分布式锁 文章目录 SpringBoot集成redis 3 Redisson方式实现分布式锁 TOC 前言 一 Redisson是什么 二 集成步骤 1 依赖引入 2 文件配置
  • mysql的流程控制if与case

    mysql中常用的流程控制有两种 1 if语句 基本语法 IF expr v1 v2 如果表达式 expr 成立 返回结果 v1 否则 返回结果 v2 用法跟三目运算符类似 适用只有两种结果 案例 SELECT IF 1 gt 0 正确 错
  • 疯壳AI语音及人脸识别教程2-4串口

    目录 1 1寄存器 1 1 2实验现象 17 视频地址 https fengke club GeekMart su f9cTSxNsp jsp 串口 官方QQ群 457586268 串行接口分为异步串行接口和同步串行接口两种 异步串行接口统
  • 这100套毕设项目,是给计算机系学弟学妹在毕业季的一波镇定剂!练手收藏

    又到了一年一度的毕业季了 有憧憬社会的 也有怀念校园生活的 不管如何我们都要努力向前 迎接变化 这次小编整理的100套Java毕设项目 给正在发愁的你和将来要项目练手的你一波助力 具体内容目录给大家看看 希望可以帮到你 需要更多学习方式和资
  • [论文阅读] (28)李沐老师视频学习——1.研究的艺术·跟读者建立联系

    娜璋带你读论文 系列主要是督促自己阅读优秀论文及听取学术讲座 并分享给大家 希望您喜欢 由于作者的英文水平和学术能力不高 需要不断提升 所以还请大家批评指正 非常欢迎大家给我留言评论 学术路上期待与您前行 加油 前一篇文章介绍AAAI20腾
  • depends工具查看exe和dll依赖关系

    应用场景 在使用QT等图形用户界面应用程序开发框架开发Windows程序时 通常需要将写到的程序发布到其它计算机中进使用 在使用Qt发布程序时 虽然使用windeployqt工具能够自动打包好大部分依赖库 但还是难免会漏掉一些第三方库导致发
  • C#学习05-类简介与派生继承

    基本概念 类是一种数据结构 它可以包含数据成员 函数成员以及嵌套类型 C 中类的声明 C 中类的声明即定义 不同于c 中声明与定义是分开的 C 类构造函数 类的 构造函数 是类的一个特殊的成员函数 当创建类的新对象时执行 构造函数的名称与类