An interface implicitly defines all the methods of Object.
Hence if you have an empty interface like this
interface IUnknown{ }
you can create a non abstract class like this
class Base implements IUnknown{}
It is not necessary for Base to be abstract as
Base implicitly extends Object. And all the abstract methods
that IUnknown has defined have been implemented in Object.
There are no restrictions on overriding a concrete method to abstract again, as demonstrated by this example.
<pre>
interface IFoo{
public void setVal();
public long getVal();
}
class Base implements IFoo{
public void setVal(){}
public long getVal(){ return 0; }
}
abstract class Derived extends Base{
abstract public void setVal();
}
public class Test extends Base{
public void setVal()
{
System.out.println("Setting Value");
}
public static void main(String[] args)
{
Test t = new Test();
t.setVal();
}
}
</pre> Rgds
Sahir