1. 程式人生 > >實現多個具有相同方法的接口和父類與實現接口有相同方法

實現多個具有相同方法的接口和父類與實現接口有相同方法

不顯示 就是 super關鍵字 向上 向上轉型 問題 super void urn

一、實現多個具有相同方法的接口

這種情況還是比較少會遇到的,但事實是存在這樣的問題,所以寫下解決的方法:

使用內部類:

interface InterA {
void f();
}

interface InterB {
void f();
}

public class C implements  InterA {
public void f() {
// 實現接口InterA方法
System.out.println("A.f()");
}
private class ImplB implements InterB {
public void f() {
// 實現接口InterA方法
System.out.println("B.f()");
}
}
public InterB getB() { return new ImplB(); } // 使用 public static void main(String[] args) { C c = new C(); InterA a = c; //C實現了A接口,可以直接向上轉型 a.f(); InterB b = c.getB(); b.f(); } }

這樣就區分開使用不同接口的方法,如果是直接實現兩個接口,然後實現方法,那麽將是同時實現兩個接口中的方法。

二、父類與實現接口有相同方法

當父類中有與實現接口相同的方法時,比如(使用HTTPServlet實現的Filter就具有相同的destroy方法)

如果不顯示實現方法會發現沒有語法的錯誤,那麽就是說明繼承下來的方法實現了接口中的同名方法。

如果需要區分開,那麽需要重寫放以及增加一個方法,在增加的方法中使用super關鍵字調用父類的方法,而重寫方法不調用父類方法,那麽就算是區分開了。

註:如果情況在復雜一點(如更多接口,還有一個父類)交叉多個相同方法。。。。。。。大家應該很難才會遇到這樣的情況。。。而且接口的設計方法都是有意義的,不會有那麽多的同名。。

實現多個具有相同方法的接口和父類與實現接口有相同方法