本帖最后由 Neverbelazy 于 2013-5-27 09:53 编辑
1. 不能单单从程序编写的角度考虑接口的存在的意义, 正如题主所说, 从代码编(复写vs新建)写来看似乎没有必要
2. 但是跳出写代码本身而言, 接口的意义十分重大
3. 接口提供了一种约定, 任何程序设计者认为的, 应该遵循这种约定的类都应该实现这个接口
3.1 接口中只定义abstract的方法反而减少了歧义,或麻烦 因为实现一个约定可以有千万种不同的方法, 假设你可以在接口中写方法体, 但是实现类不合适, 不还是要重写?或者说, 实现了,但是使用者忘记重写了, 但是还不适用, 那不更悲剧了(考虑存入TreeSet的元素需要实现comparable接口的例子)
3.2 所以,接口这就相当于告诉提供了一个标签, 使用者就可以知晓, 哦 原来这个类需要遵循这个约定来实现这个约定下可以使用的一些功能
4. 另外, 接口可以曲线的实现多“继承”, 而abstract的方法也是可以实现多继承的重要原因, 就是因为多实现的类一定需要复写, 才避免了多个父接口有同名方式时不知道该用哪个“父接口"中的方法这个问题。 |