C#抽象种与接口的差别

注意!我在这里所描述的抽象种和接口是基于C#的。

1、抽象种
抽象类是非一般的种,只是不能被范例化;此外,具有种的其余特征;主要的是抽象种可以包括抽象步骤,这是普普通通类所不能的。抽象步骤只得宣言于抽象类中,且不包孕任何兑现,衍生类务须覆盖它们。除此而外,抽象种可以衍生自一个抽象种,可以覆盖基类的抽象步骤也可以不覆盖,如其不覆盖,则其衍生类务必覆盖它们。

抽象类范例
一 public abstract class A
二 {
三 private int? num = null;

五 public int? Num
六 {
七 get { return num; }
八 set { num = value; }
九 }

11 public virtual int? getNum()
12 {
13 return num;
14 }
15
16 public void setNum(int? n)
17 {
18 this.num = n;
19 }
20
21 public abstract void F();
22 }
23
24 public abstract class B:A
25 {
26 //public override void F()
27 //{
28 // throw new Exception("The method or operation is not implemented.");
29 //}
30
31 public abstract void E();
32 }
33
34 public class C : B
35 {
36 private C()
37 {
38 }
39
40 public override void E()
41 {
42 throw new Exception("The method or operation is not implemented.");
43 }
44
45 public override void F()
46 {
47 C c = new C();
48 throw new Exception("The method or operation is not implemented.");
49 }
50 }


2、接口
接口是引述门类的,类似于种,更和抽象种有所形似,以至很多人对抽象种和接口的差异比较模模糊糊。和抽象种的相似之处有3点:
一、不能范例化;
二、包孕未兑现的步骤宣言;
三、衍生类务须兑现未兑现的步骤,抽象类是抽象步骤,接口则是全部成员(不仅是步骤包括其余成员);

接口如同下特点:
接口除开可以包孕步骤以外,还可以包孕属性、目录器、事件,并且这些成员都被定义为国有的。除外,不能包孕任何等他的成员,比如:恒量、域、结构函数、析构函数、静态成员。
一个种可以直接承袭多个接口,但不得不直接承继一个种(包括抽象种)。

接话把例
一 public delegate void Del();
二 public interface ITest
三 {
四 //int ?a = null;

六 int A
七 {
八 get;
九 }

11 void Test();
12 event Del OnDel;
13 int this[int index]
14 {
15 get;
16 set;
17 }
18 }


注意!再有除此以外一品种不能被范例化:
全部结构函数都被标记为private,这品种也是不能被范例化的,严厉的说是不能在类外被范例化,

本文来源:
我的异常网
Java Exception
Dotnet Exception
Oracle Exception

可以在该类的内部范例化(这种模式可以用来兑现单件设计方式)。注意1点,这么的种也不能够作为基类来沿袭。

3、抽象种和接口的应用
抽象类用来一部分兑现一个种,再由用户按需求对其开展不同的扩张和完美;接口只是定义一个举动的轨范或规定。
抽象种在组件的全部兑现间提供通用的已兑现效能;接口创造在大范围全异对象间施用的效能。
抽象类重要用来关系密切的对象;而接口合适为不相关的种提供通用心能。
抽象类重要用来设计大的效能单元;而接口用以设计小而精练的功能块。

比如:
Window窗体可以用抽象种来设计,可以把国有操作和属性放到一个抽象类里,让窗体和对话框沿袭从这个抽象种,再依据自个儿的需求开展扩张和圆满。
打印操作可以作为一个接口提供给每个亟需此效能的窗体,由于窗体的内容不同,快要根据他们自各儿的要求去兑现自个儿的打印效能。打印时只透过接口来调用,而不要在乎是那个窗体要打印。


上一页 [一] [二]

本文来源:
我的异常网
Java Exception
Dotnet Exception
Oracle Exception 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值