Java OOP理论的一些澄清?
所以我对OOP和Java一般都是新手。我一直在阅读我的教科书,学习OOP编程的4个最基本的概念,但它相当混乱 教科书中说“一个类可以改变它的函数或变量类型,用户不需要改变他们的代码”,这是封装的一个优点,但对我来说,这听起来像是抽象 此外,教科书将重写和重载列为继承的形式,但Google告诉我们重写和重载是多态的形式 有人能帮我澄清一下吗Java OOP理论的一些澄清?,java,oop,theory,Java,Oop,Theory,所以我对OOP和Java一般都是新手。我一直在阅读我的教科书,学习OOP编程的4个最基本的概念,但它相当混乱 教科书中说“一个类可以改变它的函数或变量类型,用户不需要改变他们的代码”,这是封装的一个优点,但对我来说,这听起来像是抽象 此外,教科书将重写和重载列为继承的形式,但Google告诉我们重写和重载是多态的形式 有人能帮我澄清一下吗 您完全正确,它是一种抽象,允许实现在不影响其用户的情况下进行更改。然而,封装是构建防弹抽象的一个关键特性:没有封装,对象的用户只有在遵循约定从不访问对象的内部
也许StackOverflow的这些问题和答案可以帮助您: “类可以更改其功能或变量类型以及用户 无需更改其代码”作为封装的优势, 但对我来说,这听起来像抽象
这意味着,只要保持相同的类定义和公共接口,就可以更改类的实现,而不必强制类的用户调整其代码。因此,他们不必处理课堂上的内部变化。类的公共接口包括类公开的所有方法和成员。我在维基百科上查找了多态性。它给出了稍微不同的定义。我想你可能不得不接受,这些术语本身并没有公认的定义。计算机科学仍然是一门艺术。Josh Bloch给出了一个很好的例子,说明了封装如何帮助用户修改API而不破坏使用它的人的代码()。至于多态性和继承性,它们通常是齐头并进的。多态性是通过单个接口与不同类型的对象进行通信的行为。如果
Poodle
和Beagle
扩展Dog
,则Dog
可以用作这两种类型对象的接口,因为它们将继承Dog
的方法。覆盖允许您更改实现;当你使用接口进行通信时会发生什么?维基百科称之为“重载”即席多态性,并说这是多态性的一种形式。我想我要说的是“这些术语没有普遍一致的定义”。是的,多态性是一个非常松散的术语,其内容高度依赖于上下文。@MarkoTopolnik非常感谢。也许是时候买一本更好的教科书了。