我有一个例子来说明为什么在类声明中extends先于implements,
界面:
public interface IParent {
void getName();
void getAddress();
void getMobileNumber();
}
抽象类:
public abstract class Parent {
public abstract void getAge();
public void getName(){
System.out.print("the parent name");
}
}
儿童班:
public class Child extends Parent implements IParent {
@Override
public void getAddress() {
System.out.print(" Child class overrides the Parent class getAddress()");
}
@Override
public void getMobileNumber() {
System.out.print(" Child class overrides the Parent class getMobileNumber()");
}
@Override
public void getAge() {
//To change body of implemented methods use File | Settings | File Templates.
}
}
如果您观察到接口和抽象类中都有相同的方法 getName(),那么在抽象类中该方法具有实现。
当您尝试实现时,类必须重写接口的所有抽象方法,然后我们尝试扩展已经具有方法 getName() 实现的抽象类。
当您创建 Child 类的实例并将方法 getName() 称为
Child child = new Child();
child.getName();
孩子调用哪个方法实现会有冲突,因为同一个方法 getName() 会有两个实现。
为了避免这种冲突,他们强制先扩展并稍后实现接口。
因此,如果抽象类具有与接口中相同的方法,并且如果抽象类已经实现了该方法,那么对于子类,则无需重写该方法