The Diamond Problem
The "diamond problem" (sometimes referred to as the "deadly diamond of death") is an ambiguity that arises when two classes B and C inherit from A, and class D inherits from both B and C. If D calls a method defined in A (and does not override the method), and B and C have overridden that method differently, then from which class does it inherit: B, or C?
For example, in the context of GUI software development, a class Button
may inherit from both classes Rectangle
(for appearance) and Clickable
(for functionality/input handling), and classes Rectangle
and Clickable
both inherit from the Object
class. Now if the equals
method is called for a Button
object and there is no such method in the Button
class but there is an overridden equals
method in both Rectangle
and Clickable
, which method should be eventually called?
It is called the "diamond problem" because of the shape of the class inheritance diagram in this situation. In this article, class A is at the top, both B and C separately beneath it, and D joins the two together at the bottom to form a diamond shape.
Read more about this topic: Multiple Inheritance
Famous quotes containing the words diamond and/or problem:
“Every time an ashtray is missing from a hotel, they dont come looking for you. But let a diamond bracelet disappear in France and they shout John Robie, the Cat. You dont have to spend every day of your life proving your honesty, but I do.”
—John Michael Hayes (b.1919)
“I tell you, sir, the only safeguard of order and discipline in the modern world is a standardized worker with interchangeable parts. That would solve the entire problem of management.”
—Jean Giraudoux (18821944)