【C#】抽象类、密封类、静态类的概念

news/发布时间2024/8/25 4:18:47

一、什么是抽象类
含义:抽象类就是指设计为被继承的类,抽象类只能被用作其他类的基类。

要点:

抽象类使用abstract修饰符声明


抽象类不能被创建实例。

抽象类可以包含抽象成员或普通的非抽象成员。(抽象成员下面会进行说明)

抽象类可以继承另一个抽象类


任何派生自抽象类的类必须使用override重写抽象类中所有的抽象成员,除非派生类自己也是抽象类。

二、抽象成员
含义:抽象成员是指设计用来被覆写的函数成员。

要点:

抽象成员只可以在抽象类中声明。

抽象成员必须是一个函数成员。(字段和常量不能为抽象成员)

必须使用abstract修饰符标记。

抽象成员不能有实现代码块。(代码块用分号代替)

只有4个类型的成员可以声明为抽象的。(方法、属性、事件、索引器)

抽象成员不能标记为虚方法。(不能使用virtual标记抽象成员)

比较虚成员和抽象成员


抽象类代码示例:

abstract class MyBase
{
public int SideLength = 10;//数据成员
const int TriangleSideCount = 3;//数据成员

abstract public void PrintStuff(string s);//抽象方法
abstract public int MyInt { get; set; }//抽象属性

public int PerimeterLength() //非抽象方法
{
return TriangleSideCount * SideLength;
}

}

//继承抽象类
class MyClass : MyBase
{
private int _myInt;

//覆盖抽象属性
public override int MyInt
{
get { return _myInt; }
set { _myInt = value; }
}

//覆盖抽象方法
public override void PrintStuff(string s)
{
Console.WriteLine(s);
}
}
//测试
class Test
{
static void Main(string[] args)
{
MyClass myClass = new MyClass();
myClass.PrintStuff("string");
myClass.MyInt = 1;
Console.WriteLine(myClass.MyInt);
Console.WriteLine("Perimeter Lengeth: {0}",myClass.PerimeterLength());

}

}
三、密封类
抽象类必须用作基类,不能像独立的类那样被实例化。密封类与抽象类相反。

密封类只能用作独立的类,它不能用作基类。(不能被其他类所继承)

密封类使用sealed修饰符标注。


四、静态类
含义:静态类中所有成员都是静态的。静态类用于存放不受实例数据影响的数据和函数。(常见用途:创建一个包含一组数学方法和值的数学库)

重点:

类本身必须标记为static

类的所有成员必须是静态的

类可以有一个静态构造函数,但不能有实例构造函数,不能创建该类的实例

静态类是隐式密封的,也就是说不能继承静态类。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_66598341/article/details/129784614

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

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

相关文章

2024-02-03:用go语言,你有 k 个背包。给你一个下标从 0 开始的整数数组 weights, 其中 weights[i] 是第 i 个珠子的重量。同时给你整数 k, 请你按照如下规则将所有

2024-02-03:用go语言,你有 k 个背包。给你一个下标从 0 开始的整数数组 weights, 其中 weights[i] 是第 i 个珠子的重量。同时给你整数 k, 请你按照如下规则将所有的珠子放进 k 个背包。 没有背包是空的。 如果第 i 个珠子和第 j 个珠子在同一个背包里, 那么下标在 i 到 j…

AIStudio框架汇总及介绍

长风破浪会有时,直挂云帆济沧海 AIStudio.框架汇总 开源版名称地址描述Gitee GitHub 博客 Wpf画板框架:示意图,流程图,SFC顺序控制图,逻辑图,思维导图,画板,Block基础功能,可编程画板(预览)等Gitee GitHub 博客 权限框架Wpf客户端:大屏,系统管理,流程中心,通用查…

[SQL]事务

本篇文章阐述了什么是事务,以及四种事务隔离级别的特性和配置方法。 如果文中阐述不全或不对的,多多交流。【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18004299 出自【进步*于辰的博客】参考笔记一,P19.7/8…

用友NCC【取消记账】按钮如何显示出来?

NCC 总账系统,凭证记账节点【取消记账】按钮显示操作方法: 1)打开凭证记账节点:路径:首页>财务会计>总账>凭证管理>凭证记账 2)把鼠标定位到“凭证记账”这四个字中间 3)鼠标左键快速点击三下,右上角就会出来【取消记账】按钮结果:欢迎好评!

记录一次实机安装linux的经历

众所周知,不会玩linux的程序员不是一个合格的程序员。 为了能更好地装逼学习linux,我打算自己动手在实体电脑上安装一下linux。并将这次经历记录下来,以便日后查看。 安装前的准备 为了方便蹭公司的电 我这次选择笔记本电脑来安装linux,来看看这次用来装系统的电脑配置除了…

中国移动光猫ZN-M160G获取超密,并修改为桥接

登录光猫的后台,默认为192.168.1.1,账号和密码使用光猫背面的即可,这个账户的权限低,但是通过修改也能折腾 登录成功后访问一下网址http://192.168.1.1/getpage.gch?pid=1002&nextpage=tele_sec_tserver_t.gch然后会看到启用Telnet,我们勾选保存后重启。账号密码也许…

压缩算法_quicklz接口demo

1 quicklzquicklz是单片机上一个常见的压缩算法,具体原理没有文档和hash表的相关基础我就不去深究了;只需要将fileSrc.txt放在桌面,代码可以使用vscode的mingw直接编译; 2 quicklz源码quicklz.h/***quicklz.h************************************************************…

【译】认识新数学:贾斯汀乔克的“革命数学”

原作:泰勒海因斯 引言:《革命数学》令人信服地证明:我们批判算法逻辑的首要任务不应该是去物化,这将预设,对我们不可控的技术,进行一定程度的控制。但它并不总是遵循自我行事。贾斯汀乔克 (Justin Joque) 的评论,《革命数学:人工智能、统计和资本主义逻辑》(Verso,202…

STM32MP135开发板助力电力行业,IEC61850协议移植笔记

1.概述 IEC61850是变电站自动化系统(SAS)中通信系统和分散能源(DER)管理的国际标准。它通过标准的实现,实现了智能变电站的工程运作标准化。使得智能变电站的工程实施变得规范、统一和透明,在电力和储能系统中应用非常广泛。 本文基于米尔MYD-YF13X开发板,在Linux系统上…

IT业务的卓越服务

要想实现卓越服务,就必须对当前的服务成熟度进行全面分析。然而,这种评估可能会令人望而生畏,尤其是在现有评估框架不明确的情况下。这些方法要么考虑实践的成熟度,要么考虑技术的成熟度,为团队提供了狭隘的视野。 为了克服这些不足,我们为您带来了卓越服务交付矩阵,这是…

SpringMVC的执行流程及初始化流程

今天大致来看一下Spring MVC的执行流程和初始化流程是什么样的 1,执行流程:也就是一个请求是怎么到我们Controller的 2,初始化流程:也就是那些 HandlerMapping、HandlerAdapter是怎么初始化并让我们拿到的 执行流程 我们都知道 DispatcherServlet(前端控制器) 这样的一个…

关于「日志采样」的一些思考及实践

一、背景: 系统日志可用于追踪用户操作轨迹,异常情况下,合理的日志有助于快速排查、定位问题,毫无疑问,打印日志对于系统是很重要的。 当业务规模较小时,大家都倾向于享受日志带来的便利,从而忽略日志带来的潜在的负面影响,缺乏对日志的管控。在JD当前用户量、业务规模…

CCSIP中国网络安全行业全景册(第六版)发布 飞驰云联入选7大领域

2024年1月24日, FreeBuf咨询正式发布《CCSIP 2023中国网络安全行业全景册(第六版)》。Ftrans飞驰云联的产品凭借优秀的市场表现,强势入选网络隔离/网闸、工业网络隔离系统/网闸、数据安全管控(平台型)、数据安全治理(解决方案)、恶意内容检测、容灾备份、邮件安全等7大…

27-行空板遇上Klipper之三: 做一个基于Klipper的通用延时摄影机

前言Klipper On Unihiker(一)Klipper 全家桶 KlipperScreen,横屏,触摸,关闭原来的 USB 连接打印机 远程摄像头优秀的虚拟打印机测试平台(二)打印 断电续打 plr 演示原创文章,转载引用请务必注明链接,水平有限,如有疏漏,欢迎交流指正。 文章如有更新请访问 DFRobot 社…

企业级微服务项目实战《学成在线》【三】(Nacos,Gateway,Minio环境搭建)

Nacos网关配置 服务器环境配置 注意下面的环境配置是针对远程服务器或自己搭建的虚拟机的,默认资料的虚拟机可以不用看!!! 先拉取1.4.1的镜像并启动: docker pull nacos/nacos-server:1.4.1 docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-s…

openwrt / SMABA4文件共享添加设置用户密码

去年配置完,今年重置机器又要配置,还是记录下吧,免得老是查阅别人文章 用来用去还是liyuqing1990大佬高大全5.4最省心 附上恩山liyuqing1990大佬固件地址: https://lidrive.vip/默认情况下,SAMBA是匿名共享可用的,但就是偏偏在用户可视化界面不添加个密码设置 SSH到后台手…

JavaScript – XMLHttpRequest

前言 XMLHttpRequest 是 JavaScript built-in 的一个 class,用于发送 HTTP 请求,俗称 AJAX。 这几年 XMLHttpRequest 已经逐渐被 Fetch 取代了,只剩下一个功能目前 Fetch 还做不到 -- 获取上传进度,因此 XMLHttpRequest 还是得学起来😑。Simple Get Request & Respon…

leetcode--99. 恢复二叉搜索树(dfs)

记录 0:10 2024-2-2 https://leetcode.cn/problems/recover-binary-search-tree ==做了好久没做出来看的题解做的。 分析原因:对dfs还是不够熟悉,特别是涉及到前/中/后序遍历的性质上因为对二叉搜索树中序遍历得到的结果必然是非递减的,所以找到不合格的地方就行了。 如果是…

周报2

补题1:[蓝桥杯2013国AC]网络寻路题意:找出包含四个结点的路径条数,源结点和终结点可以相同,但中间节点必须不同。 做法:dfs暴力搜简单易想,但是会TLE。另一种巧妙的做法,枚举每一条边(最多1e5条),固定每一条边,ans+=(du[u]-1)*(du[v]-1)*2;即为答案。一条边固定两个端点…

关于对拍

知周所众,对拍是一个在比赛中重要的技能之一。 所以,我自制了一个建议的对拍程序,简洁实用(Windows环境)。 原理 对拍原理大致如下: 数据生成器(generator)->程序1->输出1 数据生成器(generator)->程序2->输出2 输出1-对拍-输出2 $\ \ \ \ \ \ \ \ \ \ \…
推荐文章