C#简单总结

1.C# 接口与抽象类

2017-08-30  本文已影响0人  小王子是偷影子的人

接口

从“面向接口编程”的角度看,接口是一中思想层面上的用以实现多态、提高软件灵活性和可维护行性的架构部件。

从代码的角度来看,接口是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或这其他接口继承。

interface interfatceName

{

void Method1();

void Method2(int para1);

void Method3(string para2,string para3);

}

①接口不能被实例化

②接口只能包含方法声明

③接口的成员包括:方法声明、属性、索引器、事件

④接口中不能包含:常量、字段(域)、构造函数、析构函数、静态成员

⑤接口中的所有成员默认为public,因此接口中不能有private修饰符

⑥派生类必须实现接口的所有成员

⑦一个类可以直接实现多个接口,接口之间用逗号隔开

⑧一个接口可以有多个父接口,实现该接口的类必须实现父接口中的所有成员

⑨接口是对动作的抽象

⑩接口表示的是:这个对象能做什么

⑪接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约

⑫接口是引用类型的

抽象类

简单点说,含有abstract修饰符的类为抽象类,抽象类提供多个派生类共享基类的公共定义,能够提供抽象方法和非抽象方法。

抽象类不能被实例化,必须通过继承由派生类实现其抽象方法;

抽象类的派生类可以声明为抽象类,即抽象派生类,抽象派生类可以覆盖基类的方法也可以不覆盖,其非抽象派生类必须覆盖它们。

①抽象类不能被实例化

②抽象类中的抽象方法只作声明,不包含实现,可以看作没有实现的虚方法

③抽象类可以有抽象属性和抽象方法,但不是必须

④非抽象派生类必须覆盖基类的抽象方法

⑤抽象派生类可以覆盖基类的方法也可以不覆盖

⑥抽象类是对根源的抽象

⑦抽象类表示的是:这个对象是什么

⑧抽象类在代码实现方面发挥作用,可以实现代码重用

⑨抽象方法声明中不能使用static和virtual修饰符


相同点:

①都可以被继承

②都不能被实例化

③都可以包含方法声明

④派生类必须实现未实现的方法

不同点:

①抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、方法声明。

②抽象类是一个不完整的类,需要进一步细化。接口是一个行为规范。

③抽象类只能被单一继承。接口可以被多重实现。

④抽象类更多的是定义在一系列紧密相关的类中。接口大多数是关系疏松但都实现某一功能的类中。

⑤抽象类是从一系类相关对象中抽象出来的概念,因此反应的是事物的内部共性。接口是为了满足外部调用而定义的一个功能约定,因此反应的是事物的外部特性。

⑥接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法。

⑦接口可以用于支持回调,而继承不具备这个特点。

⑧抽象类实现的具体方法默认为虚。接口的类中方法默认是非虚的,当然可以声明为虚的。

⑨如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中的方法。

⑩抽象类只能作用于引用类型。接口可以作用于值类型和引用类型。

上一篇下一篇

猜你喜欢

热点阅读