Java 中的一切都是对象吗,就像在 Ruby 中一样?
书籍、教程,一切都说“Ruby 中的一切都是对象”,但这在面向对象语言中常见吗?
是不是所有对象都是 Java,或者说面向对象只是一种编程范式,并不意味着所有对象都是对象或求值为对象?
最佳答案
没有。
就值而言,“原始类型”(int
、bool
、float
等.) 在 Java 中不是对象。在 Ruby 中,它们是对象。 (在某些 Ruby 实现中,为了提高性能,fixnums 在内部是“值类型”,但在外部它们可被视为具有方法的“真实”对象)。
此外,还有一些在 Ruby 中是对象但在 Java 中不是对象的东西,例如类。 (实际上,Java 也将它们公开为 Class
,但意义不同。)
有些东西在这两种语言中都不是对象,例如变量和方法。 (尽管在 Ruby 中很容易获得表示给定方法的对象。)
无论如何,我认为更大的图景是 Object Oriented programming paradigm提供了一种方式来对数据进行分组和对所述数据进行操作。 (这通常是通过实例方法来完成的,就像在 Java 和 Ruby 中一样,尽管它也可能通过多重分派(dispatch)和其他语言来完成,比如“非 OO 的 Haskell” ",为这项任务提供替代方法。)
“面向对象”的定义通常还包括“继承”、“封装”、“抽象”和其他愚蠢的教科书术语,但不同“面向对象”语言的用法和模式可能有很大差异,并且与“非 OO”语言 ;-)
关于Java 和 Ruby : "everything is an object" in OO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158791/