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 really think that American gentlemen are the best after all, because kissing your hand may make you feel very very good but a diamond and a sapphire bracelet lasts forever.”
—Anita Loos (18931981)
“The problem of the novelist who wishes to write about a mans encounter with God is how he shall make the experiencewhich is both natural and supernaturalunderstandable, and credible, to his reader. In any age this would be a problem, but in our own, it is a well- nigh insurmountable one. Todays audience is one in which religious feeling has become, if not atrophied, at least vaporous and sentimental.”
—Flannery OConnor (19251964)