我试图理解OOP中“抽象”的定义。
我遇到了一些主要定义。它们都有效吗?其中之一错了吗?我很困惑。(我用自己的话重新写了定义)。
定义1:
抽象是从现实世界中获取一些对象并将其转换为编程术语的概念。如创建Human
类,并给予它int health
,int age
,String name
等性质,和eat()
等方法。
定义2:
更一般的定义。抽象是一个概念,它发生在软件系统中涉及“使事情变得更加通用/简单/抽象”的任何地方。一些例子:
继承层次结构,其中较高的类更简单或更通用,并定义更通用和抽象的实现。而层次结构中的下层类则更为具体,并定义了更详细的实现。
使用封装从其他类中隐藏类的实现细节,从而使该类对外部软件世界更加“抽象”(更简单)。
定义3
另一个通用定义:抽象是将重点从事物的细节和具体实现转移到事物的类型(即类),可用的操作(即方法)等概念,从而使编程更简单,更通用,更抽象。(这可以在软件系统中的任何位置和任何上下文中发生)。例如,它在封装时发生,因为封装意味着隐藏实现的细节,仅显示事物的类型及其更笼统和抽象的定义。Anotehr示例将使用List
Java中的对象。该对象实际上使用a ArrayList
或a 的实现细节LinkedList
,但是此信息使用更通用的名称来抽象List
。
这些定义是否正确?(我指的是最常规和公认的定义)。