#1
I just spent so much time explaining how the two are exactly the same. Actually, it's better to use an interface when you run into the situation the person above me mentioned. Two interfaces allow the same method signature because the methods are abstract, and they won't run because there's no implementation (that's your answer to #2). Try that with abstract classes and you get problems.
abstract class Mother { void m(){} }
abstract class Father { void m(){} }
class Child extends Mother, Father {
void c(){super.m();}
}
Which method from its parents is called? So, this is not allowed in Java. You'd get a compile time error. If you would have you used interfaces, you'd be alright:
interface Mother { void m(); }
interface Father {void m(); }
class Child implements Mother, Father {
public void m(){}
}