以下示例中Nested
和Child
之间的区别是什么?这只是同一件事的不同语法吗?
class Parent
class Nested
...
end
end
class Child < Parent
...
end
答案 0 :(得分:6)
否,它们不同。
嵌套:&#39;处理器&#39;计算机外部的类只能作为Computer :: Processor访问。嵌套为内部类(命名空间)提供上下文。对于ruby解释器Computer and Computer :: Processor只是两个独立的类。
class Computer
class Processor # To create an object for this class, this is the syntax Computer::Processor.new. The Outer class provides context
Child:下面是类继承,Parent类的实例/类方法可用于Child。可以像这样Child.new/Parent.new
实例化Child / Parentclass Child < Parent
请注意,Processor
只能访问Computer::Processor
,只需调用Processor
就会抛出错误。同样地,调用Child
是好的,但调用Parent::Child
会发出警告(虽然它实际上会运行正常)。
答案 1 :(得分:1)
一些术语:
Nested
嵌套或内部,因为它属于类Parent
引入的名称空间 。但请注意,正如@Jorg所建议的那样, NOT 是一个通常意义上的嵌套类(参见,in Java)。Child
是类Parent
的子类或子类,通过子类化指定,又名< strong>继承(is-a relationship),Child < Parent
。粗略地说,Child
继承了Parent
。要真正了解嵌套类会发生什么,您需要知道常量如何在Ruby中工作。
class
或module
定义。::
可用于在命名空间的层次结构中移动以选择常量。 class
定义中,例如class C; ...; end
,创建一个类,并绑定到一个常量C
,它将成为该类的名称。