java子接口方法覆盖父接口方法的思考
接口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"); } }