抽象类与接口区别
2017-10-20 15:35
197 查看
一、抽象类:
抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。二、接口:
接口是引用类型的,类似于类,和抽象类的相似之处有三点:1、不能实例化;
2、包含未实现的方法声明;
3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);
另外,接口有如下特性:
接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。
三、抽象类和接口的区别:
1.抽象类在定义类型方法的时候,可以给出方法的实现部分,也可以不给出;而对于接口来说,其中所定义的方法都不能给出实现部分。例如:
public abstract class AbsTest { public virtual void Test() { Debug.WriteLine( "Test" ); } public abstract void NewTest(); }
public interface ITest { void Test(); void NewTest(); }
2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;
3.一个类一次可以实现若干个接口,但是只能扩展一个父类
4.接口可以用于支持回调,而继承并不具备这个特点.
5.抽象类不能被密封。
6.抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然您也可以声明为虚的.
五:接口相对于抽象类的优势。
一,接口不光可以作用于引用类型,也可以作用于值类型。而抽象类来说,只能作用于引用类型。二,.Net的类型继承只能是单继承的,也就是说一个类型只能继承一个类型,而可以继承多个接口。其实,我对于这一点也比较赞同,多继承会使继承树变的混乱。
三,由于接口只是定义属性和方法,而与真正实现的类型没有太大的关系,因此接口可以被多个类型重用。相对于此,抽象类与继承类的关系更紧密些。
四,通过接口,可以减少类型暴露的属性和方法,从而便于保护类型对象。当一个实现接口的类型,可能包含其他方法或者属性,但是方法返回的时候,可以返回接口对象,这样调用端,只能通过接口提供的方法或者属性,访问对象的相关元素,这样可以有效保护对象的其他元素。
相关文章推荐
- 抽象类与接口的区别
- 接口和抽象类的区别
- .net基础------抽象类和接口区别
- 关于JAVA的OOP程序设计中抽象类和接口的区别介绍
- 接口和抽象类的区别
- 详细解析Java中抽象类和接口的区别
- 总结接口的基本特点浅谈接口和抽象类的区别
- 抽象类和接口的区别——很深入的一篇文章
- 抽象类与接口的区别
- java 抽象类和接口的区别
- 从设计模式看抽象类与接口的区别
- php面向对象编程:抽象类与接口的区别
- C#抽象类和接口的区别
- java中接口和抽象类的区别
- 接口和抽象类的作用以及区别
- 接口和抽象类有什么区别
- 基础知识整理贴--.Net中抽象类和接口的区别
- 抽象类和接口的区别是什么?
- 抽象类和接口的区别
- 接口与抽象类的区别