接口和抽象类的区别

来源:互联网 发布:光盘刻录自动播放软件 编辑:程序博客网 时间:2024/05/23 23:43

 接口和抽象类的区别
答案:①相同点: 
(1) 都可以被继承 
(2) 都不能被实例化 
(3) 都可以包含方法声明 
(4) 派生类必须实现未实现的方法 
区 别: 
(1) 抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。 
(2) 抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。微软的自定义接口总是后带able字段,证明其是表述一类“我能做。。。” 
(3) 接口可以被多重实现,抽象类只能被单一继承 
(4) 抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中 
(5) 抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定, 因此反映的是事物的外部特性 
(6) 接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法 
(7) 接口可以用于支持回调,而继承并不具备这个特点 
(8) 抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然您也可以声明为虚的 
(9) 如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法。

②前段时间我面试的时候总结的笔记:
抽象类:
1) 抽象方法,只有行为的概念,没有具体的行为实现。
使用:abstract 关键字修饰,并且没有方法体。
2) 包含抽象方法的类,就一定是抽象类。
使用: abstract 关键字修饰,包含抽象方法。
3) 抽象类不能直接创建实例。可以定义引用变量。
4) 抽象类只能被继承,一个具体类继承一个抽象类,必须实
现所有抽象方法。
5) 抽象方法和抽象类非常适合作为系统的分析和设计的工具。
接口:
1 接口:全部的方法都是抽象方法,全部的属性都是常量。
接口用来表示纯抽象概念,没有任何具体的方法和属性。
2 不能实例化,可以定义变量。
3 接口变量可以引用具体实现类的实例。
4 接口只能被实现(继承),一个具体类实现接口,必须使用全部的
抽象方法。
5 接口之间可以继承。
6 一个具体类可以实现多个接口,实现多继承现象,表示:
7 接口中的属性,默认是常量 public static 

0 0