LINUX.ORG.RU

Ромбовидное наследование

 ,


0

2

Заинтересовался я тут сабжем

Ромбовидное наследование (англ. diamond inheritance) — ситуация в объектно-ориентированных языках программирования с поддержкой множественного наследования, когда два класса B и C наследуют от A, а класс D наследует от обоих классов B и C. При этой схеме наследования может возникнуть неоднозначность: если метод класса D вызывает метод, определенный в классе A (и этот метод не был переопределен в классе D), а классы B и C по-своему переопределили этот метод, то от какого класса его наследовать: B или C?

Поигрался немножко, и понял, что никакой неоднозначности тут не возникает и возникнуть в принципе не может.


A=function(){this.x=1}

B=function(){this.a=10; this.x="another_B"}
C=function(){this.b=20; this.x="another_C"}

tmp=new A
B.prototype=tmp
C.prototype=tmp
delete tmp

D=function(){}
tmp=new B
C.call(tmp)
D.prototype=tmp
console.log(tmp) // { a: 10, x: 'another_C', b: 20 }
delete tmp

d=new D

console.log(d.x, d.a, d.b) // another_C 10 20

Тут абсолютно очевидно, что D наследует от C, поскольку мы видим, что в строке C.call(tmp) мы затерли x новым значением.

Таким образом, мы видим, что данная проблема не является проблемой в общем смысле, а это быдло-дизайн-ЯП-специфичная проблема. Просто в некоторых «ЯП» слишком много подковерной возни.



Последнее исправление: anonimous (всего исправлений: 1)
Ответ на: комментарий от anonimous

«Изначального» ООП не существует. Есть некий набор принципов, всё остальное каждый язык додумывает по-своему.

devsdc ★★
()
Ответ на: комментарий от devsdc

Видимо, «изначальным» следует считать то ООП, которое придумал Изобретатель ООП, и автор термина ООП.

anonimous
() автор топика
Ответ на: комментарий от devsdc

Дело не в этом. Там основополагающие принципы совершенно другие.

anonimous
() автор топика

Сабж не особо интересен, почти никогда не сталкивался с робмиками, с ними сложно столкнуться при хоть какой-нибудь архитектуре. Однако анон!мус молодца, зарулил в одиночку аппонентов)

PS: согласен, комитетчики делают из языка говно, осталось окончательно и безповоротно впилить в него неотключаемое, приндительное статическое ООП.

ixrws ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.