【发布时间】:2014-11-08 08:47:28
【问题描述】:
所以总的来说,我对 OOP 和 Java 还是很陌生。我一直在阅读有关 OOP 编程的 4 个最基本概念的教科书,但这很令人困惑。
教科书将“一个类可以改变其功能或变量类型,而用户不需要改变他们的代码”作为封装的一个优势,但对我来说这听起来像是抽象......
此外,教科书将 Overriding 和 Overloading 列为继承形式,但 Google 说 Overriding 和 Overloading 是多态的形式。
谁能帮我解决这个问题?
【问题讨论】:
-
我在 Wikipedia 上查找了多态性。它给出了略有不同的定义。我认为您可能不得不接受这些术语本身没有普遍认可的定义。计算机科学仍然是一门艺术。
-
Josh Bloch 给出了一个很好的例子,说明封装如何帮助用户修改 API 而不会破坏使用它的人的代码 (YouTube - How to write good API desgin and why it matters)。
-
至于多态性和继承性,它们通常是齐头并进的。多态是通过单个接口与不同类型的对象进行通信的行为。如果
Poodle和Beagle扩展Dog,那么Dog可以用作这两种类型对象的接口,因为它们将从Dog继承方法。覆盖允许您更改实现;当您使用界面进行交流时会发生什么。