【问题标题】:Pure Object oriented or not纯面向对象与否
【发布时间】:2014-01-23 16:26:32
【问题描述】:

我只是想知道java是否是纯粹的面向对象编程,因为我们在java中有int,float等原始数据类型,有人说java不是纯粹的面向对象程序,但我知道原始数据类型也是对象“课”课。 现在我的实际问题来了,如果原始数据类型也是“类”类的对象,那么我们不能使用任何集合类来存储和检索它们吗?当我们尝试在任何集合类中存储任何原始类型时,为什么会发生自动装箱?这意味着正如集合文档所说,如果我们能够在集合类中仅存储对象而不是原始数据类型,那么数据类型将不再被视为对象..!! ??

【问题讨论】:

  • 基元不是Class类的对象。
  • @IsmailBadawi 我认为他们的意思是你可以通过int.class 获得相应的Class 对象。
  • 对于什么是“纯洁”,不同的人会有不同的看法,讨论这个并没有太大的实用价值。因此,我认为这是基于意见的,不属于 SO。 (有关另一个论坛上最近的讨论,请参阅 here。)

标签: java oop


【解决方案1】:

这些原始类型具有包装类。

int - java.lang.Integer
float - java.lang.Float

这样,你实际上可以拥有List<Integer>等。

【讨论】:

    【解决方案2】:

    我将纯度定义为编程语言偏离纯面向对象编程的程度,纯面向对象编程仅由对象和消息传递组成。换句话说,

    • 一切都是对象。
    • 您所能做的就是发送消息。

    SmalltalkSelf 之类的语言相比,Java 远非纯 OO 语言,但与 C++ 相比可能更接近,因此它向前迈进了一步。例如,在 Smalltalk 中,对象的创建是通过消息传递完成的:

    | window |
     window := Window new.
     window label: 'Hello'.
     window open
    

    在现代编程中,我认为更接近纯OO的概念是ErlangAkka的actor模型。不久前我写了一篇博文:what is object-oriented programming?

    【讨论】:

      【解决方案3】:

      推荐你看看这个帖子:What's the difference between primitive and reference types?。要回答您最初的问题,Java 不是“纯”OO,因为除了引用类型之外还有原始类型。但是,通过自动装箱,这对语言用户来说几乎是透明的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-28
        • 2015-04-24
        • 2014-06-26
        • 2010-09-18
        • 2014-02-26
        • 1970-01-01
        • 2010-09-08
        相关资源
        最近更新 更多