標籤:
問題是這樣的:一個父類中有一個方法,一個介面中有一個與父類方法重名的方法,現在子類中要同時繼承父類和實現介面,那麼應該怎麼區分子類的方法是重寫的父類的還是實現的介面的。
基類代碼:
public class Father {
public Father() {
System.out.println("基類建構函式{");
show();
System.out.println("}");
}
public void show() {
System.out.println("基類----show");
}
}
介面:
public interface Inter {
public void show();
}
子類的實現方法:外部類繼承父類,內部類實現介面,然後內部類實現一個方法返回繼承介面的內部類執行個體
具體代碼:
//外部類繼承父類
public class Child extends Father{
public static void main(String[] arf){
//執行個體化父類並調用父類方法
new Father().show();
//執行個體化子類並調用實現介面的內部類執行個體的實現方法
new Child().new InnerChild().getCallBack().show();
}
//重寫父類的方法
public void show(){
System.out.println("extend基類-----show");
}
//內部類實現介面
private class InnerChild implements Inter{
//實現介面的方法
@Override
public void show() {
System.out.println("implements");
}
//返回實現介面的方法的執行個體
Inter getCallBack(){
return new InnerChild();
}
}
}
運行結果:
基類建構函式{
基類----show
}
基類----show
基類建構函式{
extend基類-----show
}
implements
結果的最後一行實現的就是介面的方法,當然這又暴露出一個繼承的問題,下一篇文章中詳細說明。
java如何區分同時繼承的父類和實現的介面中相同的方法