title: Diamond Problem
body: <p>Wikipedia on the diamond problem:</p>
  
  <p>"... the diamond problem is an ambiguity that arises when two classes B and C inherit from A, and class D inherits from both B and C. If a method in 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?"</p>
  
  <p>So the diamond looks like this:</p>
  
  <pre><code>  A
   / \
  B   C
   \ /
    D
  </code></pre>
  
  <p>My question is, what happens if there is no such class A, but again B and C declare the same method, say foo(). Isn't this the same problem? Why is it then called diamond problem?</p>
  
  <p>Example:</p>
  
  <pre><code>class B {
      public void foo() {...}
  }
  
  class C {
      public void foo() {...}
  }
  
  class D extends B, C {
  }
  
  new D().foo();
  </code></pre>