我是第一次使用Ruby的Java程序员,我对两种语言之间的某些功能进行比较有几点疑问。
构造函数的概念是否与Ruby相关?如果是,那么行为与Java构造函数相比如何?
在Java中,我们通常为不同的类(不嵌套时)保留单独的.java
文件。 Ruby中有类似的做法吗?或者每个类本身不像Java那么重要?
如何扩展类(或.rb
文件)?我想扩展一个类并在我的本地构造函数中调用super
来初始化一些项目。
如何从另一个.rb
文件中的其他类访问.rb
文件中的类的方法?
Ruby" gems"相当于Java包?
答案 0 :(得分:2)
<
运算符用于继承另一个类。它是红宝石的extends
。在子类构造函数中,您可以像在Java中一样调用super。答案 1 :(得分:2)
1)是的。有一个构造函数的概念,其行为类似于 Java one 。但是,构造函数方法在Ruby中称为initialize
,在Java中,构造函数与类本身具有相同的名称。例如:
class Foo
def initialize
# initialization logic here
end
end
2)是的,它被认为是每个文件存储类的最佳实践 - 单独使用,但它不受语言限制。
3)对于继承,Ruby中有不同的语法。请考虑以下代码:
class Parent
end
class Child < Parent
end
4)它实际上与Java非常相似,您使用.
来指示对象上的方法:
class Person
def name
"Tester"
end
end
p = Person.new
puts p.name
5) Ruby中没有真正的软件包概念,但你可以使用modules
来命名空间你的类,例如:
module Foo1
class Biz
end
end
module Foo2
class Biz
end
end
b1 = Foo1::Biz.new
b2 = Foo2::Biz.new
答案 2 :(得分:0)
构造函数在Ruby中是一个相关的东西吗?如果是,那么与Java相比,行为有何变化?
不,Ruby中没有构造函数。与Java有三种不同的“方法”(实例方法,静态方法和构造函数)不同,Ruby只有一种方法:实例方法。
在Java中,我们通常为不同的类(如果不是嵌套的)保留单独的.java文件。 Ruby中的方法是否相同?
没有。您可以将一个文件用于相关概念。它可能是一个单独的类,但话说再说,它可能不是。例如,Ruby标准库中的set.rb
文件包含Set
和SortedSet
类。
也可能是在多个文件中定义了单个类。例如,上述set.rb
不仅包含Set
和SortedSet
类,还包含Array
类的片段to_set
将数组转换为集合的方法。
或类本身没有多大关系?
Ruby是一种基于类的OO语言,类非常相关。
如何扩展一个类(或.rb文件)?我想扩展一个类,并在我的本地构造函数中调用超级构造函数来初始化一些项。
您无法“扩展文件”。但是,您可以扩展类,就像在Java中一样。
如何从另一个类(.rb文件)访问类(.rb文件)中的方法?
同样,文件与此无关。
您可以在对象上调用方法,就像几乎所有其他OO语言一样,包括Java。你没有“访问类中的方法”。
Ruby中的Java和Gems中的包是一样的吗?我们曾经在一个项目中有多个包用于测试,实用程序等。在Ruby中它的方法也一样吗?
没有。宝石更像是Maven的文物。在Ruby中没有类似于Java包,尽管可以使用模块。