- 概述
- 设计理念
- 应用场合
- interface vs. abstract class
- 修改记录
概述
网上大多数资料,在比较 interface 和 abstract class 区别时,往往是先从语法,然后实现(编程),最后是设计理念和应用场合。我觉得这样不妥!设计理念才决定了,它们在语法、编程和应用上的差异。
另外,作为 C# 程序员的我,开始会忘记——继承 abstract class,实现 interface 接口。为什么?编程语言决定的。因为,C# 中,不区分继承,还是实现。无论是 abstract class,还是 interface,.net 都采用相同语法。这样做可以理解,但这也会隐藏事物的本质。而 Java 区分得很清楚,继承 extends 类,实现 implement 接口。如下所示,定义抽象类 M 和接口 IM。
abstract class M
{
abstract void Method();
}