【发布时间】:2012-03-29 08:29:00
【问题描述】:
正如标题所说,在 Ruby 中,诸如 private、public 等“关键字”实际上是“在类上运行的方法,动态改变方法的可见性”(http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Classes)——这在 Java 中是否相同?
谢谢!
【问题讨论】:
-
没有。在java中情况并非如此。
正如标题所说,在 Ruby 中,诸如 private、public 等“关键字”实际上是“在类上运行的方法,动态改变方法的可见性”(http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Classes)——这在 Java 中是否相同?
谢谢!
【问题讨论】:
没有。在 Java 中,这映射到 JVM 理解(并强制执行)的字节码中的某些内容。编译器自己也使用它。
加载类时不会发生“动态编译/类操作”,就像在 Ruby 或 Perl 中那样。
【讨论】:
不,在 Java 中它们是“真正的”关键字:修饰符最终出现在生成的字节码中。它们不是方法。
【讨论】:
不,他们不是。 Java是一种编译语言,编译器在解析你的代码时会理解这些关键字的特定含义。
Ruby 不是预先编译的,因此 Ruby 中的类定义实际上是在运行时定义类的可执行语句。这就是为什么访问修饰符实际上是 Ruby 中的运行时方法。 Java 中的类加载完全不同。
【讨论】: