Java OOP理论的一些澄清?

Java OOP理论的一些澄清?,java,oop,theory,Java,Oop,Theory,所以我对OOP和Java一般都是新手。我一直在阅读我的教科书,学习OOP编程的4个最基本的概念,但它相当混乱 教科书中说“一个类可以改变它的函数或变量类型,用户不需要改变他们的代码”,这是封装的一个优点,但对我来说,这听起来像是抽象 此外,教科书将重写和重载列为继承的形式,但Google告诉我们重写和重载是多态的形式 有人能帮我澄清一下吗 您完全正确,它是一种抽象,允许实现在不影响其用户的情况下进行更改。然而,封装是构建防弹抽象的一个关键特性:没有封装,对象的用户只有在遵循约定从不访问对象的内部

所以我对OOP和Java一般都是新手。我一直在阅读我的教科书,学习OOP编程的4个最基本的概念,但它相当混乱

教科书中说“一个类可以改变它的函数或变量类型,用户不需要改变他们的代码”,这是封装的一个优点,但对我来说,这听起来像是抽象

此外,教科书将重写和重载列为继承的形式,但Google告诉我们重写和重载是多态的形式

有人能帮我澄清一下吗

  • 您完全正确,它是一种抽象,允许实现在不影响其用户的情况下进行更改。然而,封装是构建防弹抽象的一个关键特性:没有封装,对象的用户只有在遵循约定从不访问对象的内部状态时,才能保持与实现无关

  • 重载肯定与继承无关。这是一种(弱)多态性,但最重要的是,它只是允许对几个完全不同的方法使用相同的名称。它几乎与OOP无关,并且完全适用于任何其他编程范式,如过程或函数


  • 也许StackOverflow的这些问题和答案可以帮助您:

    “类可以更改其功能或变量类型以及用户 无需更改其代码”作为封装的优势, 但对我来说,这听起来像抽象


    这意味着,只要保持相同的类定义和公共接口,就可以更改类的实现,而不必强制类的用户调整其代码。因此,他们不必处理课堂上的内部变化。类的公共接口包括类公开的所有方法和成员。

    我在维基百科上查找了多态性。它给出了稍微不同的定义。我想你可能不得不接受,这些术语本身并没有公认的定义。计算机科学仍然是一门艺术。Josh Bloch给出了一个很好的例子,说明了封装如何帮助用户修改API而不破坏使用它的人的代码()。至于多态性和继承性,它们通常是齐头并进的。多态性是通过单个接口与不同类型的对象进行通信的行为。如果
    Poodle
    Beagle
    扩展
    Dog
    ,则
    Dog
    可以用作这两种类型对象的接口,因为它们将继承
    Dog
    的方法。覆盖允许您更改实现;当你使用接口进行通信时会发生什么?维基百科称之为“重载”即席多态性,并说这是多态性的一种形式。我想我要说的是“这些术语没有普遍一致的定义”。是的,多态性是一个非常松散的术语,其内容高度依赖于上下文。@MarkoTopolnik非常感谢。也许是时候买一本更好的教科书了。