Dam*_*ien 15
要完成以前的答案:
界面是"合同".如果类实现了接口,则必须提出接口中列出的所有服务.
抽象类是骨架.它定义了扩展类的某种方式,同时让它们有一些自由空间(抽象方法)是唯一的.
一个纯粹的抽象类与接口做同样的事情,但是有一个独特的扩展问题,对我来说,它没有兴趣
sat*_*esh 10
每个接口都是隐式抽象的:接口体中的每个方法声明都是隐式抽象和公共的.
抽象类具有可以包含实现的方法.抽象方法可以是公共的,受保护的或默认访问(包可见).与接口不同,抽象类可以包含非静态和最终的字段.
另请参阅:
Interfaces vs Abstract类 和
Java教程
选择纯抽象而不是接口的原因之一是强制子类实现由超类实现的特定方法。
例如(在 Java 中),
假设您希望所有扩展类都实现 toString()、equals() 和 hashCode()。
您可以为该合约创建一个名为 ForceSomeMethods 的接口,但这些方法是由 Object 隐式实现的。
将 ForceSomeMethods 设为纯抽象类,并使用 toString() 等作为抽象方法,所有子类将被迫实现这些方法。
| 归档时间: |
|
| 查看次数: |
11177 次 |
| 最近记录: |