Obwohl sowohl Vererbung als auch Komposition die Wiederverwendbarkeit von Code ermöglichen, besteht der Hauptunterschied zwischen Komposition und Vererbung in Java darin, dass Komposition die Wiederverwendung von Code ermöglicht, ohne ihn zu erweitern, während Sie bei Vererbung die Klasse für die Wiederverwendung von Code oder Funktionalität erweitern müssen. Ein weiterer Unterschied, der sich aus dieser Tatsache ergibt, ist, dass man mit Composition Code sogar für eine nicht erweiterbare finale Klasse wiederverwenden kann, während bei Inheritance in solchen Fällen kein Code wiederverwendet werden kann. Außerdem kann man mit Composition Code aus vielen Klassen wiederverwenden, da sie nur als Membervariable deklariert werden, während man mit Inheritance nur Code aus einer Klasse wiederverwenden kann, da man in Java nur eine Klasse erweitern kann, da Mehrfachvererbung in Java nicht unterstützt wird. In C++ kann man dies jedoch tun, da dort eine Klasse mehrere Klassen erweitern kann. Übrigens, Sie sollten immer Komposition der Vererbung in Java vorziehen nicht nur ich, sondern auch die Joshua Bloch hat in seinem Buch vorgeschlagen
2 Stimmen
Andere damit zusammenhängende Frage: Gibt es irgendetwas, das durch Komposition nicht erreicht werden kann, was durch Vererbung möglich ist? stackoverflow.com/questions/2238642/
1 Stimmen
Siehe auch ist-ein-gegen-einen-der-besser-ist
2 Stimmen
Dieser Artikel war für mich sehr nützlich und hilfreich: thoughtworks.com/insights/blog/
0 Stimmen
Auschecken themightyprogrammer.dev/article/inheritance-composition