God Chun

海纳百川有容乃大

抽象类实现接口的意义

    最近在看JDK容器的源码,看到了很多抽象类实现了接口的写法,并且抽象类实现接口是不用实现所有的接口方法的。这点以前我没有注意到。一开始不太明白这么做的意义。仔细思考了之后,觉得这真是一种非常好的设计方法。 这么做就是为了 获取一个抽象程度合适的类,以供码农选择使用。 任何设计都应该有他的实际需求场景,现在我们假设一个场景。

    小春是一个程序员,他拿到了一个接口IA,这个接口有一共a,b,c,d,e五个方法,他要实现这个接口,当他写了三个类实现这个接口的时候,发现,a,b,c这三个方法都是一样的,只是d,e有不同的实现。所以他每次都cv工作,这让他很不爽。虽然小春很笨,但是 他身边的人很牛,就告诉他你可以写一个抽象类实现IA接口,同时在IA里实现a,b,c这三个方法(抽象类实现接口不需要实现所有方法),以后就把所有abc方法不变的类继承这个抽象类,这样子类只需要实现剩下的d,e方法。这样就实现了代码的重用。如果有新的类 需要实现所有的方法,就实现接口IA即可。

    总结起来就是,接口是最高程度的抽象 实现接口的类是最低程度的抽象,在这中间加上一个抽象类实现接口的若干方法,给了程序员更多的选择 ,可以根据具体情况选择继承抽象类还是实现接口的所有方法。

    小春很开心,学了一招。