C# 接口 抽象类

接口:

接口成员与类成员定义相似,但是有几个重要区别:

1.接口成员不允许使用访问修饰符(public internal private protected),所有的接口成员都是公共的。(默认的就是public 但是不需要写)

2.接口成员不能包含代码体。

3.接口不能定义字段成员。(可以定义属性,方法)

4.接口成员不能用关键字static virtual abstract sealed来定义。

5.类型定义成员是禁止的。

抽象类:

抽象类拥有如下特征:

1,抽象类不能被实例化, 但可以有实例构造函数, 类是否可以实例化取决于是否拥有实例化的权限 (对于抽象类的权限是abstract, 禁止实例化),

        即使不提供构造函数, 编译器也会提供默认构造函数;

2,抽象类可以包含抽象方法和访问器;

3,抽象类不能使用sealed修饰, sealed意为不能被继承;

4,所有继承自抽象类的非抽象类必须实现所有的抽象成员,包括方法,属性,索引器,事件;

abstract修饰的方法有如下特征:

1,抽象方法即是虚拟方法(隐含);

2,抽象方法只能在抽象类中声明;

3,因为抽象方法只是声明, 不提供实现, 所以方法只以分号结束,没有方法体,即没有花括号部分;如

    public abstract void MyMethod();

4,override修饰的覆盖方法提供实现,且只能作为非抽象类的成员;

5,在抽象方法的声明上不能使用virtual或者是static修饰.即不能是静态的,又因为abstract已经是虚拟的,无需再用virtual强调.

抽象属性尽管在行为上与抽象方法相似,但仍有有如下不同:

1,不能在静态属性上应用abstract修饰符;

2,抽象属性在非抽象的派生类中覆盖重写,使用override修饰符;

posted @ 2013-07-23 22:46  骑驴飚动车  阅读(173)  评论(0)    收藏  举报