接口List中繼承接口Collection,接口Collection中存在size()方法,在接口List中又覆蓋size()方法,意義何在?(覆蓋了很多方法,見下圖)
public interface List<E> extends Collection<E>
1.父接口和子接口都是抽象方法(未實現),子類沒有改變父類的該方法,在功能層面的確是沒有意義的。
2. 子類方法不能縮小所覆蓋方法的訪問權限和,但是接口里面的方法只能是public,所以子接口方法覆蓋父接口方法不能改變方法的作用域。
子類方法不能拋出比所覆蓋方法更多的異常,所以子接口方法覆蓋父接口方法不能改變方法可以改變方法的異常拋出。
3.子接口方法覆蓋父接口方法更多是考慮到類的易讀性,提醒使用者此處有這個方法。
interface A { void method() throws Exception; } interface B extends A { void method(); //這里沒有拋出異常 } public class C implements B { public static void main(String[] args) { A a=new C(); B b=new C(); //捕獲A類method方法的異常 try { a.method(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } b.method(); } @Override public void method() { System.out.println("method"); } }