2

Java 中的一切都是对象吗,就像 Ruby 中的一样?

书籍、教程、所有内容都声明“Ruby 中的所有内容都是对象”,但对于面向对象的语言来说这很常见吗?

对象的一切都是Java,还是面向对象只是一种编程范式,并不意味着一切都是对象或评估对象?

4

1 回答 1

10

不。

而言,Java 中的“原始类型”(intboolfloat等)不是对象。在 Ruby 中,它们是对象。(在某些 Ruby 实现中,fixnums 在内部是“值类型”以提高性能,但在外部它们可被视为具有方法的“真实”对象)。

此外,还有一些在 Ruby 中是对象但在 Java 中不是对象的东西,例如类。(实际上,JavaClass也公开了这些,但意义不同。)

有些东西在这两种语言中都不是对象,例如变量方法。(虽然在 Ruby 中很容易获得一个代表给定方法的对象。)

无论如何,我认为更大的图景是面向对象的编程范式提供了一种对数据进行分组和对所述数据进行操作的方法。(这通常是通过实例方法完成的,就像在 Java 和 Ruby 中一样,尽管它也可以通过多种调度和其他语言完成,比如“非 OO”的 Haskell,为这项任务提供了替代方法。)

通常“OO”的定义还包括“继承”、“封装”、“抽象”和其他愚蠢的教科书术语,但不同“OO”语言的用法和模式可能会有很大差异,并且与“非- OO" 语言 ;-)

于 2012-04-15T01:13:32.260 回答