Java 和 Ruby : "everything is an object" in OO?

标签 java ruby object

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

书籍、教程,一切都说“Ruby 中的一切都是对象”,但这在面向对象语言中常见吗?

是不是所有对象都是 Java,或者说面向对象只是一种编程范式,并不意味着所有对象都是对象或求值为对象?

最佳答案

没有。

而言,“原始类型”(intboolfloat 等.) 在 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/

相关文章:

类成员变量需要 Java "volatile"吗?

java - 如何在java中使用反射调用类的main()方法

ruby - 多用户类型登录

javascript - 获取 JSON 对象内的 typeof 元素

java - 如何设置tomcat应用服务器的home执行目录?

java.lang.NoClassDefFoundError : org/hamcrest/Matchers

Ruby:如何即时创建 attr_accessor

ruby - "public/protected/private"方法是如何实现的,我该如何模拟它?

python - 为什么 'is' 运算符说这些方法不一样?

javascript - 堆中的本地对象和工厂模式