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

java

Solution

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.

Problem

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?

Original source

Related problems