java中的default關鍵字(三)

在使用default中,可能會遇到這樣一個問題,就是實現類A 實現的兩個接口 B C 有相同命名的default方法

例子如下

第一個接口:

public interface DefaultInterface {
	
	default void defaultString() {
		System.out.println("here is interface");
	}
	
	default void defaultInteger() {
		System.out.println(1024);
	}
}

第二個接口:

public interface DefaultInterfaceTwo {
	default void defaultString() {
		System.out.println("here is interfaceTwo");
	}
}

實現類:

public class DefaultDemoImpl implements DefaultInterface ,DefaultInterfaceTwo{
}

如上面例子DefaultDemoImpl  實現類實現的兩個接口中都有名字是defaultString的方法

這個時候這個實現類是不會編譯通過的,報錯如下


如果我們真的遇到這種情況,那麼只需要在代碼中重寫一下defaultString方法,在重寫方法中,可以調用兩個接口中的任意

一個方法,也可以完全重寫

public class DefaultDemoImpl implements DefaultInterface ,DefaultInterfaceTwo{
	@Override
	public void defaultString() {
		DefaultInterface.super.defaultString();
		DefaultInterfaceTwo.super.defaultString();
		System.out.println("here is class");
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章