C#基础之 继承类相关构造函数使用

news2025/1/11 5:03:20

类构造函数 作用是为 类中成员变量进行赋值操作
单个类的时候 一般不会有什么思路问题,主要说明一下 有继承关系类的时候

当存在继承关系的类 如 A:B
首先要注意第一点:顺序
那么在构造函数时 顺序是由 B先构造 然后 A在构造
注意第二点方法使用
继承的一特点是为了复用,如果在使用方法却不想复用父类情况时 一般是进行重写操作,
重写之后,方法使用的准则 :实例化的哪个类 需要调用方法 就使用其所在类中方法 若不存在则向上兼容
接下里 用代码 net 8.0控制台 举个经典例子 以及分析

class Program
{
    static void Main()
    {
        try
        {
            var a1 = new A(1);
            var a2 = new A(1,2);
            var b1 = new B(1);
            var b2 = new B(1,2);
        }
        catch (Exception ex)
        {
            throw;
        }
    }

    public class A:B
    {
        public A(int a1) : base(a1)
        {
            x = a1;
        }
        public A(int a1,int a2) :base(a1, a2)
        {
            x = a2;
        }
        public int x;
        public override  void test()
        {
            Console.WriteLine("这是A"+x);
        }
    }
    public class B
    {
        public B(int c1)
        {
            y = c1;
            test();
        }
        public B(int c1,int c2)
        {
            y = c2;
            test();
        }
        public int y;
        public virtual void test()
        {
            Console.WriteLine("这是B"+y);
        }
    }

}

输出结果为
在这里插入图片描述
可能不知道的技术点
1.base 用法 目的为了区分使用 当父类多个构造函数时使用几个参数的构造函数
2.重写 1 需要父类设置方法为virtual虚方法 2 需要子类就行override 重写方法
这个技术点就是为了 满足可复用 同时也可自定义扩展
也就是规则相同能省则省,不相同就自己写

具体分析如下 以a2 和 b2实例化分析
a2.
先按照顺序思路
实例化a2 对象是 因为继承关系 会先去B类中构造,因为B多个构造函数 a2继承的是俩个参数的 所以会进入 带有c2参数的构造,但使用了test方法,此时判断A类中有此名的方法那么直接执行A中test方法
注意:因为构造函数顺序时B构造后再构造A
所以此时 方法是在执行A中方法 但是 构造A的步骤还没到达 所以 此时x为0 输出 A0

b2
先按照顺序思路实例化 直接去B类中构造 找到2个参数的对应构造 y=2,接下来执行test方法,发现B类中就有 执行B中test方法 输出B2

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

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

相关文章

【leetcode刷题】:双指针篇(有效三角形的个数、和为s的两个数)

文章目录 一、有效三角形的个数题目解析算法原理代码编写 二、和为s的两个数题目解析算法原理代码编写 一、有效三角形的个数 题目解析 有效三角形的个数【点击跳转】 题目意思很好理解:就是在一堆非负整数的数组里,随机选三个数进行搭配,…

【Unity3D】apk加密(global-metadata.dat加密)

涉及:apk、aab、global-metadata.dat、jks密钥文件、APKTool、zipalign 使用7z打开apk文件观察发现有如下3个针对加密的文件。 xxx.apk\assets\bin\Data\Managed\Metadata\global-metadata.dat xxx.apk\lib\armeabi-v7a\libil2cpp.so xxx.apk\lib\arm64-v8a\libil…

机器学习之贝叶斯分类器和混淆矩阵可视化

贝叶斯分类器 目录 贝叶斯分类器1 贝叶斯分类器1.1 概念1.2算法理解1.3 算法导入1.4 函数 2 混淆矩阵可视化2.1 概念2.2 理解2.3 函数导入2.4 函数及参数2.5 绘制函数 3 实际预测3.1 数据及理解3.2 代码测试 1 贝叶斯分类器 1.1 概念 贝叶斯分类器是基于贝叶斯定理构建的分类…

前端报告 2024:全新数据,深度解析未来趋势

温馨提示: 此报告为国际版全球报告,其中所涉及的技术应用、工具偏好、开发者习惯等情况反映的是全球前端开发领域的综合态势。由于国内外技术发展环境、行业生态以及企业需求等存在差异,可能有些内容并不完全契合国内的实际情况,请大家理性阅读,批判性地吸收其中的观点与信…

科普CMOS传感器的工作原理及特点

在当今数字化成像的时代,图像传感器无疑是幕后的关键 “功臣”,它宛如一位神奇的 “光影魔法师”,通过光电效应这一奇妙的物理现象,将光子巧妙地转换成电荷,为图像的诞生奠定基础。而在众多类型的图像传感器中&#xf…

word论文排版常见问题汇总

word论文排版常见问题汇总 常用快捷键: Alt F9 正常模式与域代码模式切换 Ctrl F9 插入域代码 F9 刷新域代码显示,要注意选定后刷新才会有效果 word中在当前列表的基础上修改列表 在使用word时,我们会定义一个列表,并将其链接…

使用PVE快速创建虚拟机集群并搭建docker环境

安装Linux系统 这里以安装龙蜥操作系统AnolisOS8.9为例加以说明。 通过PVE后台上传操作系统ISO镜像。 然后在PVE上【创建虚拟机】,选定上传的龙蜥操作系统镜像进行系统安装。 注意:在安装过程中,要设定语言、时区、超管用户root的密码、普…

某音响制造公司发展战略转型项目成功案例纪实

面对产业结构变化、海外订单缩减、劳动力成本攀升、缺乏自主品牌等原因导致的利润空间急剧下降的挑战,面向海外市场的代工厂如何在严峻的经济形势下克服发展障碍,成功实现转型与发展? 某音响制造公司,面临着订单量减少、成本增高…

redis的学习(三)

6. set集合 集合:把一些有关联的数据放在一起。 1、集合中的元素是无序的,即数据存放顺序不重要,变化一下顺序,集合依旧是之前的集合。 2、集合中的元素是不能重复的(唯一性)与list类似的是集合中的每一个元…

点赞系统设计(微服务)

点赞业务是一个常见的社交功能,它允许用户对其他用户的内容(如帖子、评论、图片等)表示喜欢或支持。在设计点赞业务时,需要考虑以下几个方面: 一、业务需求 点赞业务需要满足以下特性: 通用:…

C#进阶-在Ubuntu上部署ASP.NET Core Web API应用

随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一。ASP.NET Core 作为一个跨平台、高性能的框架,非常适合在 Linux 环境中运行。本篇博客将详细介绍如何在 Linux 服务器上部署 ASP.NET Core Web API 应用,包…

设计模式-结构型-桥接模式

1. 什么是桥接模式? 桥接模式(Bridge Pattern) 是一种结构型设计模式,它旨在将抽象部分与实现部分分离,使它们可以独立变化。通过这种方式,系统可以在抽象和实现两方面进行扩展,而无需相互影响…

python学习笔记—16—数据容器之元组

1. 元组——tuple(元组是一个只读的list) (1) 元组的定义注意:定义单个元素的元组,在元素后面要加上 , (2) 元组也支持嵌套 (3) 下标索引取出元素 (4) 元组的相关操作 1. index——查看元组中某个元素在元组中的位置从左到右第一次出现的位置 t1 (&qu…

基础算法--查找

一、线性枚举 1、线性枚举定义 线性枚举指的就是遍历某个一维数组(顺序表)的所有元素,找到满足条件的那个元素并且返回,返回值可以是下标,也可以是元素本身。 由于是遍历的,穷举了所有情况,所…

G1垃圾回收器的FullGC

如何确定GarbageFirst回收器发生的是FullGC ? 必须出现FullGC字样才算是FUllGC,例如下图:因为内存分配失败(Allocation Failure)导致 如果不出现FullGC的字样说明它不是FUllGC,并不像Serial GC、ParallelGC的在老年代…

Golang的代码压缩技术应用案例分析与研究实践

Golang的代码压缩技术应用案例分析与研究实践 一、介绍 是一种具有强大性能和便捷开发特性的编程语言,除了其优秀的语法和标准库外,它还拥有很多高级特性,其中之一就是代码压缩技术。本文将从常见的Golang代码压缩技术应用案例出发&#xff0…

【Uniapp-Vue3】image媒体组件属性

如果我们想要在页面上展示图片就需要使用到image标签。 这部分最重要的是图片的裁剪,图片的裁剪和缩放属性: mode 图片裁剪、缩放的模式 默认值是scaleToFill 我将用两张图片对属性进行演示,一张是pic1.jpg(宽更长&#xf…

【网络协议】交换机概念与配置(第一部分)

概述 本文将探讨交换机的概念以及交换机的基础配置,并以此引入对 VLAN 的讨论。 文章目录 概述CSMA/CD以太网通信单播(Unicast)多播(Multicast)广播(Broadcast) MAC 地址以太网中的双工设置半双…

oracle位运算、左移右移、标签算法等

文章目录 位运算基础与或非同或同或应用场景 异或异或应用场景 什么是真值表 oracle基础函数创建bitor(按位或)函数bitnot(按位非)函数bitxor(按位异或)函数左移函数BITSHIFT()函数(实测不可用,废弃掉该方案)右移函数(略,有此场景吗?) 实际应用资质字典…

(五)ROS通信编程——参数服务器

前言 参数服务器在ROS中主要用于实现不同节点之间的数据共享(P2P)。参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点也可以往其中存储数据,关…