title: How to call default interface method from another subclass?
body: <p>Consider the following:</p>
  
  <pre><code>//Fooable.java
  public interface Fooable {
      public default void foo() {
          System.out.println("Fooable::foo");
      }
      //Lots of other non-default methods...
  }
  
  //MyFooable.java
  public class MyFooable implements Fooable {
      @Override
      public void foo() {
          System.out.println("MyFooable::foo");
      }
      //implements other methods in Fooable...
  }
  
  //MyAdvancedFooable.java
  public class MyAdvancedFooable extends MyFooable {
      @Override
      public void foo() {
          Fooable.super.foo();
          System.out.println("MyAdvancedFooable::foo");
      }
      public static void main(String[] args) {
          new MyAdvancedFooable().foo();
      }
  }
  </code></pre>
  
  <p>As you can see, I want to call <code>foo()</code> in <code>Fooable</code> from <code>MyAdvancedFooable</code> (a subclass of <code>MyFooable</code>). However, when I try to compile, I get the following error:</p>
  
  <p>MyAdvancedFooable.java:4: error: not an enclosing class: Fooable
          Fooable.super.foo();</p>
  
  <p>if I try <code>MyAdvancedFooable extends MyFooable implements Fooable</code> I get the following:</p>
  
  <p>MyAdvancedFooable.java:4: error: bad type qualifier Fooable in default super call
          Fooable.super.foo();
    method foo() is overridden in MyFooable</p>
  
  <p>How can I resolve this problem without having to create a new anonymous implementation of Fooable?</p>