Imagine you need to implement a class that extends an abstract class and implements an interface when both define a method with the same name – test().
Example
interface Implementable { public void test(); }
abstract class Superclass { public abstract void test(); }
public class Test extends Superclass implements Implementable {
/* definition of load method(s)..... */
}
The following will not compile, getting (among others) duplicate method test() error:
interface Implementable { public void test(); }
abstract class Superclass { public abstract void test(); }
public class Test extends Superclass implements Implementable {
public void Superclass.test() { }
public void Implementable.test() { }
}
Solution
The correct implementation looks as follows:
interface Implementable { public void test(); }
abstract class Superclass { public abstract void test(); }
public class Test extends Superclass implements Implementable {
public void test() { }
}
In such case, you need to define the body of test() method ONLY ONCE.