一、接口

接口是指对协定进行定义的引用类型,其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。

1、接口存在的意义是为了实现多态;

2、接口中只能包含方法(属性、事件、索引);

3、接口的成员不能有任何实现;

4、接口不能被实例化;静态类、抽象类也不可以被实例化

5、接口的成员不能有访问修饰符(默认为public);

6、实现接口的子类必须将接口的所有成员函数实现;

7、子类实现接口的方法时,不需要任何关键字,直接实现即可。(抽象类、虚方法需要加override)

二、抽象类

抽象类,在面向对象过程中,所有的对象都是类描绘的,反过来,类里面的数据不足以把具体的对象描绘出来,这样的类就是抽象类

1、抽象方法只能出现在抽象类中,但是抽象类中可以包含普通方法。

2、在父类中定义的抽象方法不能实现。

3、抽象类不能实例化(也就是不能new出来)。

4、抽象类与抽象方法需要添加abstract关键字。

5、子类实现父类的抽象方法时,需要添加override关键字。

6、如果抽象类的子类不是抽象类,那么子类中必须重写父类抽象类的所有抽象方法。

三、抽象类和接口的区别

相同点

  1.不能实例化;

  2.包含未实现的方法声明

  3.派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)

不同点

 

  1.接口可以多继承,抽象类不能实现多继承。

  2.接口只能定义抽象规则,抽象类既能定义抽象规则也能提供已实现的成员

  3.接口是一组行为规范,抽象类是一个不完全的类,着重于族的概念

  4.接口支持回调,抽象类不能实现回调,因为继承不支持。

  5.接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法,抽象类可以定义属性、字段、包含有实现的方法

  6.接口可以作用于值类型和引用类型,抽象类只能作用于引用类型(例如:Struct只能继承接口)

  7.抽象类应主要用于关系密切的对象,而接口则是适合为不相关的类提供通用功能

  8.接口着重于Can—Do关系类型,抽象类则偏重于IS—A式关系。

  9.接口多定义对象的行为,抽象类多定义对象的属性。

  10.如果要设计小而简练的功能块,则使用接口,如果要设计大的功能单元,则使用抽象类

  11.接口对应是面向对象编程思想的重要原则:面向接口编程,

C#—接口和抽象类的区别?的更多相关文章

  1. android中接口和抽象类的区别

    最近发现很多基础有点生疏了,特地写一点博客来巩固一下.今天主要来谈谈接口和抽象类的区别,我们在项目的很多地方都会用到接口或者抽象类,但是它们之间的一些区别和相同点不知道大家有没有注意到,还有就是,什么 ...

  2. Java接口和抽象类的区别

    今天看到项目中,写了一个抽象类,里面有很多方法继承了这类,当调用这个接口时,采用的是这个抽象类去调方法的,当时一想,这个不就是我们说的Java的多态的特征: 继承:存在继承关系的子类和父类 重写:子类 ...

  3. java 接口和抽象类的区别

    java 接口和抽象类的区别抽象类:1.含有抽象方法的类一定为抽象类,反过来抽象类,不一定含有抽象方法:2.抽象类必须用abstract来进行定义,抽象方法也必须用abstract来进行定义:3.抽象 ...

  4. java接口和抽象类的区别和作用(功能、用途、好处)

    Java接口: 总结了4点关于JAVA中接口存在的意义: 1.重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋 ...

  5. 【Java知识点专项练习】之 接口和抽象类的区别

    接口和抽象类的区别 接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的.接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为publi ...

  6. C#中接口与抽象类的区别

    接口与抽象类是面试中经常会考到的点,容易混淆.首先了解下两者的概念: 一.抽象类:      抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类 ...

  7. java中的接口和抽象类的区别

    1.接口从用户的角度(使用实现的代码)看问题. 2.接口由编译器强制的一个模块间协作的合约. 3.无成员变量. 4.成员函数只能声明不能实现,(jdk1.8中的default 方法可以有方法体). 接 ...

  8. 《Java基础知识》Java接口和抽象类的区别

    抽象类 抽象类必须用 abstract 修饰,子类必须实现抽象类中的抽象方法,如果有未实现的,那么子类也必须用 abstract 修饰.抽象类默认的权限修饰符为 public,可以定义为 public ...

  9. Java中接口和抽象类的区别?

    抽象类 抽象类必须用 abstract 修饰,子类必须实现抽象类中的抽象方法,如果有未实现的,那么子类也必须用 abstract 修饰.抽象类默认的权限修饰符为 public,可以定义为 public ...

  10. C# 接口与抽象类的区别? 情景下使用接口,什么情景下使用抽象类?

    接口与抽象类的区别: 接口支持多继承:抽象类不能实现多继承. 接口可以用于支持回调:抽象类不能实现回调,因为继承不支持. 接口只包含方法.属性.索引器.事件的签名,但不能定义字段和包含实现的方法:抽象 ...

随机推荐

  1. HDU 3401 Trade

    Trade Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 3401 ...

  2. Sencha Toucha 2.1 文件上传

    javascript代码: Ext.onReady(function() { Ext.create('Ext.form.Panel', { title: 'Upload a Photo', width ...

  3. Jquery书写ajax

    根据API学习本章 Jquery书写ajax 使用ajax发送表单到servlet,发送时显示等待图片,servlet处理完返回信息,在页面显示返回信息,并且隐藏等待图片 <%@ page la ...

  4. zookeeper协调技术

    本文转自http://www.cnblogs.com/wuxl360/p/5817471.html 感谢作者 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调 ...

  5. 【Git使用具体解释】Egit使用过程中遇到的问题及解决的方法

    1.   Git错误non-fast-forward后的冲突解决 问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不同意你直接把你的代码覆盖上去.于是你有2 ...

  6. update_notifier 造成nodejs进程数量增长的问题

    最近运维老大j哥找到我说了一个事儿:某私有化部署的线上环境nodejs进程数量多达1000+,对比公版线上环境的66个进程数显得十分诡异.并且单个nodejs进程所占用swap空间也较大,也不释放空间 ...

  7. 很强大的shell写的俄罗斯方块

    网上看到的一个用linux的shell脚本写的俄罗斯方块. 是我至今见过写的最牛逼的shell了.共享一下. 原作者信息在脚本的凝视中有. 下载地址:点击下载 #!/bin/bash # Tetris ...

  8. select readonly 不能看到其它选项解决方式

    在html中是select readonly后.依旧能够下拉选择.不想做disabled添加隐藏域,以下提供两种解决方式 解决方式1: onfocus="this.defaultIndex= ...

  9. Android ListView 和 ScrollView 冲突问题

    近期做一款APP,当中有一个类似微博的评论功能的界面,先是列出微博的正文内容和图片等.然后下边是评论. 一開始就想着用一个ScrollView把主要内容和评论区的ListView包起来.然后加入各个控 ...

  10. 杂项-Java:JDBC

    ylbtech-杂项-Java:JDBC JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访 ...