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:
“I met Jack Kennedy in November, 1946.... We went out on a double date and it turned out to be a fair evening for me. I seduced a girl who would have been bored by a diamond as big as the Ritz.”
—Norman Mailer (b. 1923)
“To make a good salad is to be a brilliant diplomatistthe problem is entirely the same in both cases. To know exactly how much oil one must put with ones vinegar.”
—Oscar Wilde (18541900)