C# 抽象类和接口的差别
抽象类和接口最终目的:抽象类实现多态化,接口实现功能化。比如汽车:接口就是轮子,发动机,车身等零部件,抽象类则是颜色,款式,型号等参数性东西。
抽象类(abstract):
(1) 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法
(2) 抽象类不能被实例化
(3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类
(4) 具体派生类必须覆盖基类的抽象方法
(5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生类必须覆盖它们。
接口(interface):
(1) 接口不能被实例化
(2) 接口只能包含方法声明
(3) 接口的成员包括方法、属性、索引器、事件
(4) 接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员。
接口没有构造函数,抽象类可以有构造函数,通过这点就确定了其各自的用途:接口是实现功能,抽象类是实现多态。
C# 抽象类和接口的差别的更多相关文章
- java 抽象类和接口的差别
语法层面上: 1)抽象类能够提供成员方法的实现细节.而接口中仅仅能存在public abstract 方法. 2)抽象类中的成员变量能够是各种类型的.而接口中的成员变量仅仅能是public st ...
- C# 之 抽象类与接口
抽象类 C#同意把类和方法声明为abstract,即抽象类和抽象方法.抽象类通常代表一个抽象概念,它提供一个继承的出发点,当设计一个新的对象类时,一定是用来继承的,所以,在一个以继承关系形成的等级结构 ...
- C# 它 抽象类和接口
抽象类 C#同意把类和方法声明为abstract,即抽象类和抽象方法.抽象类通常代表一个抽象概念,它提供一个继承的出发点,当设计一个新的对象类时,一定是用来继承的,所以,在一个以继承关系形成的等级结构 ...
- Java 的抽象特性:抽象类与接口深度解析
要点: 抽象类 接口 抽象类与接口的差别 一. 抽象 对于面向对象编程来说,抽象是它的四大特征之中的一个. 在Java中,能够通过两种形式来体现OOP的抽象:接口和抽象类. 接口和抽象类为我们提供了一 ...
- C#面试:抽象类与接口
本人近日面试遇到此等问题.然后又一次补习了一下下.希望对同行们有所帮助. 一.抽象类: 抽象类是特殊的类,仅仅是不能被实例化:除此以外.具有类的其它特性:重要的是抽象类能够包括抽象方法,这 ...
- JAVA的abstract修饰符 && 接口interface用法 && 抽象类和interface的差别
abstract修饰符可以修饰类和方法. (1)abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型(见后面实例),也就是编译时类型.抽象类就相当于 ...
- Java 抽象类和接口有什么差别
抽象类和接口有什么差别? 1. 抽象类在java语言中所表示的是一种继承关系,一个子类仅仅能继承一个父类.可是能够实现多个接口. 2. 在抽象类中能够拥有自己的成员变量和非抽象类方法,可是接口中仅仅能 ...
- 2016/05/25 抽象类与API(接口)差别
简单来说, 接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的, 另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的 ...
- Java面向对象进阶篇(抽象类和接口)
一.抽象类 在某些情况下,父类知道其子类应该包含哪些方法,但是无法确定这些子类如何实现这些方法.这种有方法签名但是没有具体实现细节的方法就是抽象方法.有抽象方法的类只能被定义成抽象类,抽象方法和抽象类 ...
随机推荐
- 读HashMap 源码(jdk11)的见解
如果想系统详细的了解HashMap请移步各大佬博客.这篇文章只是个人的一些见解. 数组+链表 或 数组+红黑树.这种说法感觉有迷惑性. 之前看博客都说 HashMap 的存储是数组+链表(jdk6), ...
- Python基础训练题-简单数学公式
1.在100内,将遇到被7除余数为0的都显示PASS: n=1 while n < 101: if n % 7 == 0: pass print('pass') else: print(n) n ...
- dotnetcore ef 调用多个数据库时用户命令执行操作报错
dotnetcore ef 调用多个数据库时用户命令执行操作报错 1.多个DbContext 时报错: 报错: More than one DbContext was found. Specify w ...
- 认识volatile的工作原理
前言 在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”.可见性的意思是当 ...
- linux磁盘命令-lsblk显现磁盘阵列分组
linux磁盘命令-lsblk显现磁盘阵列分组 lsblk(list block devices)能列出系统上所有的磁盘. lsblk [-dfimpt] [device] 选项与参数: -d :仅列 ...
- deepin Gtk-WARNING **: 无法在模块路径中找到主题引擎:“adwaita”
虽然没影响使用,但是看着有点不爽. 执行 sudo apt-get install gnome-themes-standard 就可以了.
- kubernets controller 和 CRD 具体组件分析
(dlv) b k8s.io/sample-controller/pkg/client/informers/externalversions.(*sharedInformerFactory).Info ...
- day12函数,三元表达式 ,列表推导式 ,字典推导式,函数对象,名称空间与作用域,函数的嵌套定义
复习 # 字符串的比较 # -- 按照从左往右比较每一个字符,通过字符对应的ascii进行比较 # 函数的参数 # 1)实参与形参: # -- 形参:在函数定义时()中出现的参数 # -- 实参:在函 ...
- hello2代码的简单分析
hello2部分代码: String username = request.getParameter("username");//将get~这个方法赋给username这个对象 i ...
- server.Transfer不工作
https://www.codeproject.com/Questions/56736/How-to-use-Server-Transfer-from-Ajax-UpdatePanel For Ser ...