接口与抽象类区别
Posted Vam8023
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口与抽象类区别相关的知识,希望对你有一定的参考价值。
抽象类:往往用来表征我们对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但本质上相同的具体概念的抽象。(面向对象的概念中,所有的对象都是通过类来描绘的。但是,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类)
作用:主要用来进行类型隐藏。
接口的定义跟抽象类相似,也可以说接口就是一个特殊的抽象类。
它们的区别:
1、abstract class在C#中表示的是一种继承关系,一个类只能使用一次继承关系。但是一个类却可以实现多个interface。
2、在abstract class中可以有自己的数据成员,也可以有非abstract的成员方法,而在interface中,可以定义方法、属性、索引和事件,所有的成员方法都是abstract的。
3、abstract class和interface所反映出的设计理念不同。其实abstract class表示的是‘is-a’关系,interface表示的是‘like-a’。
4、实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中不能有实现方法。
5、抽象类中的变量默认是private型,其值可以在子类中重新定义,也可以重新赋值。
6、接口中的方法默认都是public,abstract类型的,并且不允许成员加任何访问修饰符。
abstract class 成员的默认访问修饰是什么:
很明显,方法默认的修饰是private,可以根据需要加访问修饰符。
一笔带过:委托跟接口的区别就是,委托只能包含属性,索引,方法,而不能包含事件。
以上是关于接口与抽象类区别的主要内容,如果未能解决你的问题,请参考以下文章