c#接口和抽象类

网上有很多关于接口和抽象类比较的相关文章,有好的,有差的,这里我就从我自己的理解去阐述一下:

首先是语言层面的啊,

1.接口可以有,属性、方法、索引器和事件。前面几个其实都是方法,接口是不允许有类型存在的啊。

2.接口的访问级别默认都是Public的啊。

3.虽然默认是Public的,但是却不能有任何访问修饰符。

4.接口只有定义,没有实现。

抽象类:

1.抽象类可以有非抽象方法。

2.抽象方法用abstract修饰,abstract不能与private,static和virtual一块使用。

3.抽象类不能被实例化。

以上,就是接口和抽象类在语言层面上的特征。

接下来我们从应用场景上来说一下,接口定义了一个契约或者是一个行为的组合,实现接口的子类必须要实现接口中定义的方法,其实在c#内部,接口中的方法都是被编译为virtual的啊,子类的方法是override的,这其实就是多态的一种实现。(用new和override来实现版本的控制升级那是后话了)。

抽象类则是对一类具有共性事物的抽象,利用抽象类,可以实现代码的复用。


你可能感兴趣的:(菜鸟阶段!,c#,语言)