6

Let's assume I got this interface A:

interface A
{
    void doThis();
    String doThat();
}

So, I want some abstracts classes to implement the method doThis() but not the doThat() one:

abstract class B implements A
{
    public void doThis()
    {
        System.out.println("do this and then "+ doThat());
    }

}

abstract class B2 implements A
{
    public void doThis()
    {
        System.out.println(doThat() + "and then do this");
    }
}

There error comes when you finally decide to implement de doThat method in a regular class:

public class C implements B
{
    public String doThat()
    {
        return "do that";
    }
}

This class leads me to the error aforementioned:

"The type B cannot be a superinterface of C; a superinterface must be an interface"

Anyone could now if this hierarchy of classes is valid or should I do other way round?

Muhammad Rehan Saeed
  • 35,627
  • 39
  • 202
  • 311
Painy James
  • 805
  • 2
  • 13
  • 26
  • For more details I recommend looking at the Answers here: http://stackoverflow.com/questions/10839131/implement-vs-extends-when-to-use-whats-the-difference – Angelo Fuchs Apr 30 '14 at 06:33

3 Answers3

24

You must use extends

public class C extends B

Its important to understand the difference between the implements and extends Keywords. So, I recommend you start reading at this question: Implements vs extends: When to use? What's the difference? and the answers there.

Community
  • 1
  • 1
Angelo Fuchs
  • 9,825
  • 1
  • 35
  • 72
  • 1
    Thanks! I also forgot to add the public abstract String doThat() to each abstract classes :S – Painy James May 03 '12 at 16:13
  • 1
    @PainyJames you don't need to add the `public abstract String doThat()` to each of the abstract classes. – emory May 03 '12 at 17:24
5

Since B is a class, the correct syntax is to use extends:

public class C extends B {
NPE
  • 486,780
  • 108
  • 951
  • 1,012
3

B is an abstract class and cannot be used with the "implements" keyword. You have to use "extends" instead.

Mister Smith
  • 27,417
  • 21
  • 110
  • 193