C#编程-实现继承

在这里插入图片描述

在这里插入图片描述

C#允许您通过扩展现有类的功能以创建新类来实现继承。

在这里插入图片描述

从基类创建派生类

使用以下语法在C#中创建派生类:

	class <derived_class>:<base_class>{...}

确定继承的层次结构
要确定继承层次结构,必须检查派生类与基类之间的关系种类。确保派生类是一种基类。
请考虑以下场景。您有Emoloyee、Manager和Designer类。您需要Employee类的属性在Manager和Designer类中存在。您可以使用任何以下代码段来确保此操作:

	class Employee{public void Calc_Leave{...}}class Manager{Employee e;public void leave(){e.Calc_leave()}}class Designer{Employee e;public void leave(){e.Calc_Leave()}}class Employee{public void Calc_Leave(){...}}class Manager:Employee{public void leave(){Calc_Leave();  /*The function of the base class is available here */}}class Designer :Employee{public void leave(){Calc_Leave();  /* The function of the base class is avaiable here */}}

从语法上来说 ,上述代码段没有任何错误。然而,这些代码段之一描述了利用关系,另一代码段描述了类之间的继承。

要选择更恰当的方法来创建 Manager和Designer类,您必须分析类之间的关系。由于经理和设计人员都是雇员,所以在经理和雇员以及设计人员和雇员之间有“某种”关系。因此,从Employee类继承Manager和Designer类比在Manager和Designer类中单独创建Employee类的实例以访问Employee类的属性更为恰当。因此,在此场景中第二个代码比第一个代码更恰当。

派生类中的构造函数 调用
创建派生类的对象时,将执行该派生类以及基类的构造函数。构造函数以基类到派生类的顺序调用。但是,析构函数的执行由垃圾回收器控制,它们的调用顺序无法确定。

以下代码显示了派生类中构造函数的调用顺序:

	using System;class Base{public Base(){Console.WriteLine("Constructor of Base");}~Base(){Console.WriteLine("Destructor of Base");}}class Derived :Base{public Derived(){Console.WriteLine

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Springboot的旅游管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的旅游管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

数据结构(JS实现)

目录 链表链表的特点链表中的常见操作单链表append(data)尾部追加新节点toString()输出链表的节点数据插入节点insert(position,data)get(position)获取链表指定位置节点的数据indexOf(data)查找对应数据节点的位置update(position, newData)更新指定位置节点数据removeAt(posi…

稿件代写3个不可或缺的步骤让你事半功倍-华媒舍

作为一个需求频繁的作者&#xff0c;你可能会面临大量的稿件代写任务。但是&#xff0c;你是否曾经为提高文章质量而苦恼过&#xff1f;是否希望在有限的时间内完成更多的代写任务&#xff1f;本篇文章将向你介绍三个不可或缺的稿件代写步骤&#xff0c;帮助你事半功倍&#xf…

NGUI基础-三大基础控件之Sprite精灵图片

目录 Sprite是什么 如何创建Sprite 参数相关 Atlas Sprite Material Fixed Aspect Type Simple(普通模式&#xff09; Sliced(切片模式&#xff09; Tiled(平铺模式&#xff09; Filled(填充模式&#xff09; 常见的填充模式有以下几种&#xff1a; Advanced(高级…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)创建并初始化TcpServer实例 以及 启动

对于一个TcpServer来说&#xff0c;它的灵魂是什么&#xff1f;就是需要提供一个事件循环EventLop(EventLoop)&#xff0c;不停地去检测有没有客户端的连接到达&#xff0c;有没有客户端给服务器发送数据&#xff0c;描述的这些动作&#xff0c;反应堆模型能够胜任。当服务器和…

Stable Diffusion架构的3D分子生成模型 GeoLDM - 测评与代码解析

之前&#xff0c;向大家介绍过3D分子生成模型 GeoLDM。 GeoLDM按照Stable Diffusion架构&#xff0c;将3D分子生成的扩散过程运行在隐空间内&#xff0c;优化了基于扩散模型的分子生成。可能是打开Drug-AIGC的关键之作。让精确控制分子生成有了希望。 详见&#xff1a;分子生成…

抖音本地生活团购运营商家培训教程课件ppt

【干货资料持续更新&#xff0c;以防走丢】 抖音本地生活团购运营商家培训教程课件ppt 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 部分资料预览 添加图片注释&#xff0c;不超…

[SwiftUI]工程最低适配iOS13

问题&#xff1a; 新建工程&#xff0c;选择最低支持iOS13报错&#xff1a; main() is only available in iOS 14.0 or newer Scene is only available in iOS 14.0 or newer WindowGroup is only available in iOS 14.0 or newer 解决&#xff1a; 注释掉上面代码&#x…

JVM工作原理与实战(七):类的生命周期-初始化阶段

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、类的生命周期 1.加载&#xff08;Loading&#xff09; 2.连接&#xff08;Linking&#xff09; 3.初始化&#xff08;Initialization&#xff09; 4.使用&#xff08;Using&…

《数字图像处理》 第11章 表示和描述 学习笔记附部分例子代码(c++opencv)

表示和描述 0. 前言1. 表示1.1 边界追踪1.2 链码1.3 使用最小周长多边形的多边形近似 2. 边界描绘子2.1 一些简单的描绘子![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/45dddc76217e4fde93a11e2631b2a71a.png#pic_center 500x)2.2 形状数2.3 傅里叶描绘子2.4 统计…

04 帧 Frame

文章目录 04 帧 Frame4.1 相机相关信息4.2 特征点提取4.2.1 特征点提取 ExtractORB()4.3 ORB-SLAM2对双目/RGBD特征点的预处理4.3.1 双目视差公式4.3.2 双目图像特征点匹配 ComputeStereoMatches()4.3.3 根据深度信息构造虚拟右目图像&#xff1a;ComputeStereoFromRGBD() 4.4 …

【Python机器学习】线性模型——线性回归

线性回归&#xff0c;又叫普通最小二乘法&#xff0c;是回归问题最简单也是最经典的线性方法。线性回归寻找参数w和b&#xff0c;使得对训练集的预测值与真实的回归目标值y之间的均方误差最小。 均方误差是预测值与真实值之差的平方和除以样本差。线性回归没有参数&#xff0c…