C# 基础:Sealed、new、virtual、abstract、override的理解

 

目录

1、sealed

2、new

3、virtual

4、abstract

5、override


1、sealed

密封类不能被继承,密封方法可以重写基类中的方法,但其本身不能在任何派生类(子类)中

进一步重写。当应用于属性或者方法时,sealed 修饰符必须始终和override一同使用。

通俗的说:密封类不会有子类

2、new

new关键字用于显式隐藏从基类继承的成员。在使用子类时调用的方法是new关键字新定义的方法,而不是基类(父类)的方法。

3、virtual

virtual 关键字用于修改方法或者属性的声明,此时,方法或者属性被称为虚成员,

虚成员的实现可以由派生类(子类)中的重写成员更改。

在调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类(子类)中

的该重写成员,,如果没有派生类(子类)重写该成员,则它可能是原始成员。

说明:

1、在静态属性使用virtual修饰符是错误的。

2、通过使用override修饰符的属性声明,在派生类(子类)中重写虚拟继承属性。

4、abstract

抽象类 abstract可以修饰 类、 方法、属性、索引器、事件。

在类中使用abstract修饰符,表示该类只能是其他类的基类(父类)。标记为抽象

或者包含抽象类中的成员必须通过从抽象类派生类(子类)来实现。

抽象类特征:

1、抽象类不能进行实例化

2、抽象类可以包含抽象方法抽象访问器

3、不能用sealed修饰符修改抽象类,它俩可以理解为互逆的关系。

4、从抽象类派生的非抽象类必须包含继承的所有抽象方法抽象访问器的实现。

5、在方法或属性声明中使用abstract修饰符表示该方法或者属性不包含实现。

抽象方法的特性:

1、抽象方法是隐式的virtual方法。

2、只允许在抽象类中声明抽象方法。

3、抽象方法不提供实际的实现,例如:public abstract void play();

4、实现由overriding 方法提供,它是非抽象的成员。

5、抽象方法不能使用 static或 virtual修饰符。

6、在静态属性上使用abstract修饰符是错误的。

7、在派生类(子类),通过使用override修饰符的属性声明可以重写抽象的继承属性。

5、override

使用override修饰符来修改方法、属性、索引器或者事件,主要是提供派生类对基类方法

的新实现。从而覆盖abstract、virtual两种关键字修饰的成员。

由重写声明重写的方法称为重写基方法。重写基方法必须与重写方法具有相同的签名。

说明:

1、重写基方法必须虚拟的、抽象的或者重写的,不能重写非虚方法或者静态方法。

2、不能使用 new static、virtual和abstract修饰符修改重写方法。

3、重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且

重写属性必须是虚拟的、抽象的或者重写的。

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

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

相关文章

梁兴珍 java_数据结构与算法_Java语言

第1章 综述1.1 数据结构和算法能起到什么作用?1.2 数据结构的概述1.3 算法的概述1.4 一些定义1.5 面向对象编程1.6 软件工程1.7 对于C程序员的Java1.8 Java数据结构的类库第2章 数组2.1 Array专题Applet2.2 Java中数组的基础知识2.3 将程序划分成类2.4 类接口2.5 Or…

Yii 2.0: yii2-highcharts-widget创建饼状图

安装 The preferred way to install this extension is through composer. 项目根目录下执行: php composer.phar require --prefer-dist miloschuman/yii2-highcharts-widget "*"或者在composer.json中添加 "miloschuman/yii2-highcharts-widget&qu…

【原创】C#中的抽象类(abstract class)和接口(interface)的比较

在C#中抽象类和接口是两个相当重要的概念,深入理解对C#程序员是非常必要的,现总结如下:一、抽象类的特点:1、抽象方法只用于方法的声明并不包含方法的实现,可以看作没有实现实体的虚方法。2、抽象类不能进行实例化。3、…

U3D 脚本添加和获得对象

有时候,一开始可能没有对象,而是由于某种触发,产生的一个对象,这里讲解下,如何通过脚本来创建一个对象: 这是通过脚本创建一个立方体: using UnityEngine; using System.Collections;public cla…

50条超精辟的经典语录:哗众,可以取宠,也可以失宠!

在人生道路上给自己定位很重要,不要苛求自己达到不可能达到的高度。我们能把每一件平凡的事做好就是不平凡,把每一件简单的事做成功就是不简单。1.我们只有一个地球,所以你要爱护地球;地球上只有一个我,所以你也要爱护…

java 时间工具类 大于_Java 时间工具类

1 /**2 * 格式化字符串为日期格式3 *4 *paramdateStr 需要格式化的字符串5 *paramformat 需要的日期格式,例如"yyyy-MM-dd HH:mm:ss"6 *return7 */8 public staticDate formatDate(String dateStr, String format) {9 SimpleDateFormat dateFormat newSi…

IP、TCP和DNS与HTTP的密切关系

看了上一篇博文的发表时间,是7月22日,现在是10月22日,已经有三个月没写博客了。这三个月里各种忙各种瞎折腾,发生了很多事情,也思考了很多问题。现在这段时间开始闲下来了,同时该思考的事情也思考清楚了&am…

C# 委托的理解

1、什么是委托委托可以理解为持有一个或多个方法的对象。如果执行委托的话,委托会执行它所"持有"的方法。委托可以避免程序中大量使用if-else语句,使程序拥有更好的扩展性。2、委托的本质委托和类一样,是一种用户自定义的类型&…

java基础判断题_java基础知识周测试题带答案

简单题(每题5分,共计50分)简述Java语言跨平台的原理Java跨平台的特性,也就是同一份字节码文件可以在不同的系统上执行,由不同系统中的Java虚拟机负责翻译成对应的机器指令。写出以下名词的概念和各自作用jre - Java运行时环境信息&#xff0c…

SQLSERVER 2008 R2版本密钥(摘)

开发版32位:MC46H-JQR3C-2JRHY-XYRKY-QWPVM开发版64位:FTMGC-B2J97-PJ4QG-V84YB-MTXX8工组版:XQ4CB-VK9P3-4WYYH-4HQX3-K2R6QWEB版:FP4P7-YKG22-WGRVK-MKGMX-V9MTM数据中心版32位:PTTFM-X467G-P7RH2-3Q6CG-4DMYB数据中…

java conf_JAVA 解析、编辑nginx.conf

最近工程开发遇到一个需求:用Java去解析并编辑nginx.conf解析nginx.conf过程可以参考该项目的README.md下面举个列子说明一下该如何编辑nginx.conf。定义一个pojoimportcom.alibaba.fastjson.JSONArray;importcom.google.common.base.Strings;importlombok.Data;Dat…

【原创】关于ASP.NET WebForm与ASP.NET MVC的比较

WebForm的理解1、 WebForm概念ASP.NETWebform提供了一个类似于Winform的事件响应GUI模型(event-drivenGUI),隐藏了HTTP、HTML、JavaScript等细节,将用户界面构建成一个服务器端的树结构控件(Control)&#…

对象的接口

Simula(模拟) 是一个很好的列子。正如这个名字锁暗示的,它的作用是"模拟"像"银行出纳员"我们有一系列出纳员,客户,账户以及交易等 每类成员(元素)都有具有一些通用的特征,每个账号都有一定的余额;每个出纳都能接收客户的存款,等等。…

java color类 蓝色_java中Color类的简单总结

标签:java中Color类的简单总结1.颜色的常识任何颜色都是由三原色组成(RGB),JAVA中支持224为彩色,即红绿蓝分量取值介于0-255之间(8位表示)2.Color类中的常量public final static Color black new Color(0,0,0);public final static Color bule new Col…

C#中几种循环语法的比较

循环操作在程序开发当中使用非常的广泛,当然循环也很容易成为整个程序运行的性能瓶颈,所以理解C#中几种循环的用法,还是非常重要的。C#支持一下四种循环方式1、while循环2、do...while循环3、for 循环4、foreach循环前三种循环在C、Java中也是…

Eclipse基金会

昨天Eclipse基金会庆祝其成立十周年。2004年2月的新闻稿宣布该非盈利组织的正式成立,由包括开发者、消费者和插件提供商在内的各独立团体组成的董事会,为Eclipse的长期发展负责。 基金会成立时,有19个项目和50个董事会成员,其开源…

.Net架构必备工具列表

原文N多年前微软官网曾发了.Net下必备的十种工具,N多年过去了,世异时移,很多东西都已经变化了,那个列表也似乎陈旧了。而且,该文也只是对十种工具独立的介绍,显得有些罗列的感觉,是不是每个工具…

java scanner接收数组_java – 使用scanner将文件中的整数读入数组

我正在为学校做一份复习工作.赋值是编写一个类,它从标准输入读取一个包含几个整数的文件,这些整数将被放入一个数组中.从这里开始,需要编写方法来找出平均值,中位数,最大值,最小值和标准差.它读起来像这样:4556677889等等…所以,我假设我需要创建一个数组列表(因为长…

Asp.Net页面传值的方法简单总结【原创】

1、QueryString当页面上form按照get的方式向页面发送请求数据的时候,web server会将请求数据放入一个QEURY_STRING的环境变量中,然后通过QeueryString方法从这个变量中获取相应的参数。例如:发送参数页面Test1.aspx 按钮单击代码:…

关于archlinux下的ralink5370网卡

驱动此网卡要使用 rt2800usb,rt2800lib 这两个模块 顺便说一下对模块进行操作的命令: rmmod 模块名 //为移除模块 insmod 模块所在路径 //为添加模块 查看网卡是否能被驱动,可以使用命令:ifconfig -a 转载于:https://www.cnblogs.…