evan Asked:2024-04-22 05:52:03 +0800 CST2024-04-22 05:52:03 +0800 CST 2024-04-22 05:52:03 +0800 CST 什么是抽象? 772 我了解 OOP 中的抽象,如果我理解正确,那么这就是选择并仅关注对象的那些细节,这将使我们能够解决问题。但我也听说过抽象级别和简单的抽象,这不适用于OOP。我想澄清这些观点。 ооп 1 个回答 Voted Best Answer CrazyElf 2024-04-22T21:44:21+08:002024-04-22T21:44:21+08:00 我了解 OOP 中的抽象,如果我理解正确,那么这就是选择并仅关注对象的那些细节,这将使我们能够解决问题。 确切地。抽象是当我们从像草莓、香蕉和苹果这样的特定实体(其中每个浆果、每个水果都有自己的特征,而我们对此不感兴趣)转移到具有任何浆果共有的某些属性的广义类别草莓、香蕉、苹果时或水果,例如:颜色、重量、价格。我们只对这些属性感兴趣,而忽略其他一切。事实证明,同样的“真空中的球形马”与真正的马几乎没有共同之处,但可以让您在模拟自然界中马的行为时解决某些物理问题。 但我也听说过抽象级别和简单的抽象,这不适用于OOP。我想澄清这些观点。 抽象实际上属于OOP。可以说,这是经典 OOP 三元组“封装、继承、多态性”之前的零点。没有抽象,OOP 是不可能的。有时它与三合会一起被称为,有时它只是暗示,但没有它你哪儿也去不了。 至于抽象层次,在描述了 Strawberry、Banana、Apple 类之后,我们可以进一步讨论更抽象的 Vegetable、Fruit、Berry 类。然后是更抽象的食品类。然后到产品类。在每个阶段,我们很可能会丢失我们所描述的对象的越来越多的细节,但将获得以相同的方式与越来越多的不同实体进行操作的机会。 但是,您可以在不概括不同实体的情况下抽象自己,而是通过对具有不同细节程度的同一实体进行建模。前面提到的“真空中的球形马”是一个抽象到荒谬的例子,当时马只留下了一个特征——我们想象的球的半径,我们把马周围的环境替换为它的所有多样性都处于真空状态,即不存在任何环境。
确切地。抽象是当我们从像草莓、香蕉和苹果这样的特定实体(其中每个浆果、每个水果都有自己的特征,而我们对此不感兴趣)转移到具有任何浆果共有的某些属性的广义类别草莓、香蕉、苹果时或水果,例如:颜色、重量、价格。我们只对这些属性感兴趣,而忽略其他一切。事实证明,同样的“真空中的球形马”与真正的马几乎没有共同之处,但可以让您在模拟自然界中马的行为时解决某些物理问题。
抽象实际上属于OOP。可以说,这是经典 OOP 三元组“封装、继承、多态性”之前的零点。没有抽象,OOP 是不可能的。有时它与三合会一起被称为,有时它只是暗示,但没有它你哪儿也去不了。
至于抽象层次,在描述了 Strawberry、Banana、Apple 类之后,我们可以进一步讨论更抽象的 Vegetable、Fruit、Berry 类。然后是更抽象的食品类。然后到产品类。在每个阶段,我们很可能会丢失我们所描述的对象的越来越多的细节,但将获得以相同的方式与越来越多的不同实体进行操作的机会。
但是,您可以在不概括不同实体的情况下抽象自己,而是通过对具有不同细节程度的同一实体进行建模。前面提到的“真空中的球形马”是一个抽象到荒谬的例子,当时马只留下了一个特征——我们想象的球的半径,我们把马周围的环境替换为它的所有多样性都处于真空状态,即不存在任何环境。