Ситуация, которую вы описали, является просто чистым наследованием, она не имеет ничего общего с множественным наследованием. Например, в Java у нас есть Integer
, который наследуется от Number
, а Number
наследуется от Object
.
Стандартным примером языка с множественным наследованием является C ++
class A { };
class B { };
class C { };
class X : public A, private B, public C { };
В то время как в Java у нас есть
class A { }
class B extends A { }
class C extends B { }
class X extends C { }
С точки зрения множественного наследования Ruby похож на Java (у классов в ruby может быть только один предок). Однако Ruby предоставляет различные механизмы, которые «действуют как» множественное наследование, то есть модули
# class XX inherits from CC
class AA
end
class BB < AA
end
class CC < BB
end
class XX < CC
end
# class X mixin A,B,C modules
module A end
module B end
module C end
class X
include A
include B
include C
end
В Ruby (аналогично Java) класс AA
имеет предка по умолчанию (цепочка наследования зависит от версии Ruby)
X.ancestors
[X, C, B, A, Object, Kernel, BasicObject]
XX.ancestors
[XX, CC, BB, AA, Object, Kernel, BasicObject]