(免责声明:这不是关于理解abstract class
es 和interface
s 之间区别的问题。如果你没有明白,请再读一遍标题。我精通合约和半实现子系统之间的区别。)
让我们以 Java 为例。似乎几乎不需要一个独特的关键字interface
,从我作为开发人员的角度来看,编译器吐出完全相同的东西,用人类的话说,“你不能利用它,直到你派生(通过implements
或extends
)一个实现其方法的新类”。简单的。
但是有一种情况可能会阻止这两者的混淆:当我们需要implement
多个时interface
,因为 Java 不允许多重继承(对于class
es)。当然,以编译器在有任何方法体或声明的变量时识别并随后在适当的情况下禁止多implements
/的方式构建语言是微不足道的extends
?那么优先顺序是否存在问题?
这是我们有这种句法差异的唯一原因吗?
PS 我问这个问题的一个原因是,这种情况可能会给新的 OO 程序员在理解方面带来相当大的挑战,我认为在语言级别以更简化的方式处理这个问题,将大大有助于更快地掌握概念上的差异.