举例说明:接口A需要实现方法a、b、c,具体实现类B实现方法a、b,实现类C实现a、c。所以B,C需要实现它们不需要的方法。
public interface A { public void function1(); public void function2(); public void function3(); } public class B implements A{ public void function1(){ system.out.print("需要实现的方法1"); } public void function2() { system.out.print("需要实现的方法2"); } public void function3() { system.out.print("不需要实现的方法3;但也必须实现"); } } public class C implements A{ public void function1(){ system.out.print("需要实现的方法1"); } public void function2() { system.out.print("不需要实现的方法2;但也必须实现"); } public void function3() { system.out.print("需要实现的方法3"); } }以上代码实现造成了方法的多余;B类中不需要实现 方法3;但也必须实现 ;C类中不用实现方法2;但也必须实现。所以改造一下呢?
public interface A1 { public void function1(); public void function2(); } public interface A2 { public void function1(); public void function3(); } public class B implements A1{ public void function1(){ system.out.print("需要实现的方法1"); } public void function2() { system.out.print("需要实现的方法2"); } } public class C implements A2{ public void function1(){ system.out.print("需要实现的方法1"); } public void function3() { system.out.print("需要实现的方法3"); } }将接口分为两类;A1和A2;分别包含方法f1,f2 和f1,f3;B和C分别实现A1和A2接口。不用实现多余的方法。
最后总结一下:接口分离原则 就是子类 不用实现 多余的接口方法
优点:子类不用实现过多的接口;
缺点:接口分得过细过多,导致系统复杂。