您的位置:首页 > 编程语言 > C#

C#语法之定义接口和抽象类

2008-06-15 08:06 302 查看
抽象类是abstract修饰符用于表示所修饰的类是不完整的,并且只能用做基类。抽象类和非抽象类的不同点:

抽象类不能直接实例化。虽然一些变量和值编译时类型可以是抽象的,但是这样的变量和值必须为null,或者含有对非抽象类的实例的引用(此非是从抽象派生出的)。

当从抽象派生非的时候,这些非必须具体实现所继承所有的抽象成员,从而重写那些抽象成员。

abstract class A

{ publish abstract void F();}

abstract class B:A B为抽象类,所有他不用提供F的实现

{public void G();}

class C:B C继承A B的所有抽象成员,并且提供一个具体实现

{

publish override void F()

{//actual implementation of F}

}

由于C中没有抽象成员,所以可以,但不是必须将C声明为非抽象类。

接口

接口可以拥有静态成员、嵌套类型、抽象、虚拟成员、属性和事件。实现接口的任何类都必须提供所声明的抽象成员的定义。

他和抽象类的区别:

1) 接口不能有非抽象方法,但抽象类可以

2)一个类可以实现多个接口,但只能有一个父类

3)接口不属于继承结构,他实际于继承无关,因此无关的类也可以实现同一个接口

4)抽象类是一个不完整的类,需要进一步细化;而接口只是个行为的规范

5)接口基本不具备任何基本特点,他只是承诺了能调用的方法

6)接口可以支持回调,但是继承不行。用于回调的接口只是提供指向方法的指针,而且是类型安全的指针方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: