这些东西都在一起工作。
对象是自给自足的,它跟踪自己的状态。封装强制分离,对象发布其他对象调用的方法,但这些方法负责修改对象的状态。
在使用类的 oo 系统中,类是创建对象的模板。子类化意味着创建一个新类,它是子类的更具体版本,其中子类对象继承了指定超类的方法和字段的类定义。
抽象类推迟了一些方法的实现,把它们留给子类来实现。如果超类知道在某个特定点必须发生某些事情,但希望将发生的确切情况留给特定对象自行决定,那么这就是抽象方法的用途。
这里出现了一种模式:对象对自己负责,以及从最抽象/一般到最具体/具体的类型层次结构。多态性是关于在程序运行时根据覆盖哪些方法来确定对象的行为。覆盖意味着子类型具有替代超类版本的更具体的方法版本。
(重载 otoh 是为了方便一个类具有同名但不同参数的方法。)
这样做的结果可以是一个系统,它在高层次上处理抽象类型,并让对象本身计算出确切的细节。想法是这样可以将细节限制在子类中,并且可以通过创建新的子类来修改程序,而不会破坏程序的其余部分。无论如何,理论上,请参阅 Wadler 的表达问题,了解这一切都将走向何方。
例如:阅读 Jdk 附带的源代码。包 java.lang 和 java.util 有很多类是 OO 设计的例子。