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

在C#中抽象类和接口是两个相当重要的概念,深入理解对C#程序员是非常必要的,现总结如下:

一、抽象类的特点:

1、抽象方法只用于方法的声明并不包含方法的实现,可以看作没有实现实体的虚方法。

2、抽象类不能进行实例化。

3、抽象类里面可以不包含抽象属性和抽象方法,但如果包含抽象方法,则该类必须声明为抽象类。

4、具体的派生类必须覆盖基类的抽象方法。

5、抽象类也可以派生另一个抽象类,其中可以覆盖基类的抽象方法也可以不用覆盖,但是不覆盖的话,

则其派生类比较覆盖它们。

二、接口(interface)的特点

1、接口也不能进行实例化。

2、接口只能包含类的声明。

3、成员可以包含属性、方法、事件和索引器。

4、接口中不能包含常量、字段、构造函数、析构函数或静态成员。

5、接口 中所有的成员都默认用public修饰符进行修饰,不能出现private修饰符。

6、派生类比较实现接口所有的成员。

7、一个可以继承多个接口,接口之间用 , 分割。

8、一个接口可以有多个父接口,实现该接口的类必须实现所有父接口中的所有成员。

三、抽象类和接口的相同之处

1、都不能被实例化。

2、都可以被继承。

3、都可以包含方法声明。

4、派生类必须实现抽象类(接口)中未实现的方法。

四、抽象类和接口的不同之处

1、抽象类是一个不完整的类,需要进一步细化;接口只是一个行为的规范或规定。

2、抽象基类可以定义字段、属性和方法实现;接口只能定义属性、索引器、事件和方法声明,不能包含字段。

3、抽象类更多的是定义在一系列关系紧密的类之间;接口大多定义在关系稀松但都实现某一功能的操作。

4、接口不具有继承的任何特点。

5、接口可以被多重实现,抽象类只能被单一继承。

6、接口支持回调,抽象类不可以。

7、抽象类不能密封。

8、抽象类实现的具体方法默认为虚的;但实现接口的类中的接口方法默认不是虚的,当然也可手动声明为虚的。

9、接口和非抽象类类似,抽象类必须为在该类的基类列表中列出的接口的所有成员提供他自己的实现。但是允许抽象类将接口的方法隐射到抽象方法上。

10、如果抽象类实现接口,则可以把接口中的方法映射到抽象类中作为抽象方法而不必实现,而是在抽象类的子类中实现接口中的方法。

我的最新公众号欢迎关注一下

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

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

相关文章

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.…

java xml 递归_Java递归遍历XML所有元素

import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.DocumentException;import org.dom4j.Element;import java.util.*;/*** Created by IntelliJ IDEA.* User: leizhimin* Date: 2008-4-14 14:02:12* Note: Java递归遍历XML所有元素*/public class …

【基础】C#异常处理的总结

一、异常处理的理解?异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常。因此处理这种错误,就称为异常处理。二、异常处理如何操作?C# 异常处理时建立在四个关键词之上的&#xff…

Java Web 路径问题

可能在做文件上传或者 图片加载,资源加载 时候用到文件相对服务器地址 System.out.println(request.getRemoteUser()); //客户端用户System.out.println(request.getRemoteAddr()); //客户端IPSystem.out.println(request.getRemoteHost()); //客户端主机名Syst…