당신이 묘사 한 상황은 순수한 상속 일 뿐이며, 다중 상속과 공통점이 없습니다. 예를 들어 Java에서는 Integer
이 Number
을 상속하고 Number
이 Object
에서 상속됩니다. 다중 상속과 언어의
표준 예를 들어 자바에서 우리가
다중 상속 루비의 측면에서
class A { }
class B extends A { }
class C extends B { }
class X extends C { }
자바와 유사하다있는 반면 C++
class A { };
class B { };
class C { };
class X : public A, private B, public C { };
입니다 (루비의 클래스는 하나를 가질 수 있습니다 선조). 그러나 루비는 다른 메커니즘을 제공하는 다수의 "역할"상속 즉, 모듈
클래스
AA
이 기본 조상을 가지고 (유사 자바) 루비에서
# 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
X.ancestors
[X, C, B, A, Object, Kernel, BasicObject]
XX.ancestors
[XX, CC, BB, AA, Object, Kernel, BasicObject]
아무튼하는 클래스 (상속 체인은 루비 버전에 따라 다릅니다) Object 이외에 "하나 이상의 클래스"를 확장하지 않습니다. 상위를 지정하지 않으면 기본 상위는 Object입니다. –
귀하의 의견은 목표에 바로 지금은 정말 바보 같은 느낌. 그러나 이것은 처음이나 마지막이되지 않습니다. 따라서 모든 클래스는 암시 적으로 Object를 확장하지 않으며 대신 부모가 지정되지 않은 경우에만 확장됩니다. 그러나 모든 클래스는 Object의 속성에 액세스 할 수 있습니다. 그 이유는 계층 구조의 한 가지 또는 다른 것이 루트로 Object를 포함하기 때문입니다. 따라서 이러한 언어에는 다중 상속에 대한 내부 또는 외부 지원이 없습니다. 말이된다. 감사. –