【问题标题】:What part of OOP are constructors?OOP 的哪一部分是构造函数?
【发布时间】:2021-05-02 01:50:39
【问题描述】:

参数化构造函数属于封装或抽象,还是完全属于面向对象编程的一部分?

【问题讨论】:

  • 我会说封装和抽象

标签: java oop constructor


【解决方案1】:

虽然 StephenC 在技术上是正确的,即构造函数是对象初始化的抽象,但我认为这个答案在 OOP 的上下文中并不是特别有用。毕竟,我们可以说除二进制 1 和 0 之外的所有软件都是其他软件的抽象。

在 OOP 的上下文中,我们通常将抽象视为具体化的对立面:接口与实现。从这个角度来看,构造函数肯定是一个具体的东西。你不能构造一个抽象。

构造函数和封装是正交的。构造函数可用于创建其内部实现是公开的纯数据结构。在这种情况下没有封装。

class-based object-oriented programming 中,构造函数只是简单地确认nothing comes from nothing

【讨论】:

    【解决方案2】:

    首先,Java 构造函数就是它们的本来面目,做它们该​​做的事,不管你如何对它们进行分类。

    我认为构造函数显然是抽象的一个例子,因为它们隐藏了对象初始化的算法细节。

    由于构造函数实际上并不是隐藏对象状态的机制,因此它们不是封装机制。但显然他们使用封装机制;即字段访问修饰符。
    以上适用于参数化和非参数化的构造函数。

    有关解释封装和抽象之间区别的更多资源,请参阅:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2013-12-02
      • 2015-10-23
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多