A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孔德智 中级黑马   /  2012-9-16 15:41  /  1637 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

首先抽象类中有抽象成员和非抽象成员(和普通类成员一样),而接口的所有成员都必须在实现接口的代码类中实现。
抽象类可以有自己的字段,但是接口不能有自己的字段,构造函数,析造函数,静态成员或常量。
从用途上来说,抽象类主要是提供为对象系列的基类,共享一些主要特性,使继承于一个抽象类的对象都具有一个共同的目的或者结构。(所以我们可以把抽象类看成是对对象的一个特性)。接口主要是为一批类提供一些相同,而有必须实现的任务。实现同一个接口的一批类,就会强制的实现一些必须实现的接口成员,使编写更规范。(所以我们可以把接口看成是对类的一个特性)。
举一个例子来看:
膝上电脑和台式电脑都可以由一个抽象类来派生,这个抽象类具有电脑的某些特性,比如内存的型号,大小,电源要求等。这些特性是和具体的对象有关,我们需要从电脑来派生出我们自己的膝上电脑和台式电脑类。但是无论是什么电脑他们都会有些相同的目的,比如编写程序,拽写文档,打游戏等。我们可以为这些派生的类指定一个接口,以便他们都能实现这些相同目的的功能,例如游戏功能IgameInterface.
抽象类
MustInherit编写,不能被实例化
   Public MustInherit Class WashingMachine
Sub New()
      ' Code to instantiate the class goes here.
   End sub
   Public MustOverride Sub Wash
   Public MustOverride Sub Rinse (loadSize as Integer)
Public MustOverride Function Spin (speed as Integer) as Long
End Class
使用的时候,采用单继承模式,而接口可以同时多个共存;
   接口
接口是其他类型为确保它们支持某些操作而实现的引用类型。接口从不直接创建而且没有实际的表示形式,其他类型必须转换为接口类型。
一个接口定义一个协定。实现接口的类或结构必须遵守其协定。接口可以包含方法、属性、索引器和事件作为成员。.
下面的示例显示一个包含默认属性、事件 E、方法 F 和属性 P 的接口:
Interface IExample
   Default Property Item(index As Integer) As String
   Event E()
   Sub F(ByVal Value As Integer)
   Property P() As String
End Interface
接口可以使用多重继承。
C、   
D、   抽象类和接口的区别
1.类是对对象的抽象,可以把抽象类理解为把类当作对象,抽象成的类           
接口只是一个行为的规范或规定,微软的自定义接口总是后带able字段,证明其是表述一类类“我能做。。。”
抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中     
2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;
3.一个类一次可以实现若干个接口,但是只能扩展一个父类  
4.接口可以用于支持回调,而继承并不具备这个特点.
5.抽象类不能被密封。     
6.抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非      虚的,当然您也可以声明为虚的。  
7.(接口)与非抽象类类似,抽象类也必须为在该类的基类列表中列出的接口的所有成员提供它自己的实现。但是,允许抽象类将接口方法映射到抽象方法上。   
8抽象类实现了oop中的一个原则,把可变的与不可变的分离。抽象类和接口就是定义为不可变的,而把可变的座位子类去实现。
9.好的接口定义应该是具有专一功能性的,而不是多功能的,否则造成接口污染。如果一个类只是实现了这个接口的中一个功能,而不得不去实现接口中的其他方法,就叫接口污染。   
10.尽量避免使用继承来实现组建功能,而是使用黑箱复用,即对象组合。因为继承的层次增多,造成最直接的后果就是当你调用这个类群中某一类,就必须把他们全部加载到栈中!后果可想而知.
11.如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法     
如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。如果要设计大的功能单元,则使用抽象类。      
如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马