【发布时间】:2021-05-02 01:50:39
【问题描述】:
参数化构造函数属于封装或抽象,还是完全属于面向对象编程的一部分?
【问题讨论】:
-
我会说封装和抽象
标签: java oop constructor
参数化构造函数属于封装或抽象,还是完全属于面向对象编程的一部分?
【问题讨论】:
标签: java oop constructor
虽然 StephenC 在技术上是正确的,即构造函数是对象初始化的抽象,但我认为这个答案在 OOP 的上下文中并不是特别有用。毕竟,我们可以说除二进制 1 和 0 之外的所有软件都是其他软件的抽象。
在 OOP 的上下文中,我们通常将抽象视为具体化的对立面:接口与实现。从这个角度来看,构造函数肯定是一个具体的东西。你不能构造一个抽象。
构造函数和封装是正交的。构造函数可用于创建其内部实现是公开的纯数据结构。在这种情况下没有封装。
在class-based object-oriented programming 中,构造函数只是简单地确认nothing comes from nothing。
【讨论】:
首先,Java 构造函数就是它们的本来面目,做它们该做的事,不管你如何对它们进行分类。
我认为构造函数显然是抽象的一个例子,因为它们隐藏了对象初始化的算法细节。
由于构造函数实际上并不是隐藏对象状态的机制,因此它们不是封装机制。但显然他们使用封装机制;即字段访问修饰符。
以上适用于参数化和非参数化的构造函数。
有关解释封装和抽象之间区别的更多资源,请参阅:
【讨论】: