抽象类的成员可以具有访问级别,而接口的成员全部public级别
抽象类可以包含字段,而接口不可以(接口可以用属性来代替)
抽象类可以继承接口,而接口不能继承抽象类
抽象类的成员可以具有具体实现,而接口不行
这些是语法上的区别,实际上用途也不同
简单的例子
汽车能鸣叫(Beep),手机也能响铃(Beep)
如果要为它们都定义一个方法Beep
用抽象类就不合适了,毕竟区别太大
而可以定义一个IBeep的接口,让他们有相同的行为Beep
所以说 抽象类适合用来表现共同的本质(比如猫,狗都是动物)
而接口更合适表现拥有共同的行为
1. 接口支持多继承;抽象类不能实现多继承。
2. 接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。
3. 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。
4. 接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。
5. 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。
6. 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。
搜的。。