电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

接口和抽象类有什么区别?


发布日期:2020/2/11
 

作者 Allen

抽象方法是必须实现的方法就象动物都要呼吸但是鱼用鳃呼吸猪用肺呼吸

动物类要有呼吸方法怎么呼吸就是子类的事了

现在有很多讨论和建议提倡用interface代替abstract类两者从理论上可以做一般性的混用但是在实际应用中他们还是有一定区别的抽象类一般作为公共的父类为子类的扩展提供基础这里的扩展包括了属性上和行为上的而接口一般来说不考虑属性只考虑方法使得子类可以自由的填补或者扩展接口所定义的方法就像JAVA王子所说的事件中的适配器就是一个很好的应用

用一个简单的例子比如说一个教师我们把它作为一个抽象类有自己的属性比如说年龄教育程度教师编号等等而教师也是分很多种类的我们就可以继承教师类而扩展特有的种类属性而普遍属性已经直接继承了下来

而接口呢~还是拿教师做例子教师的行为很多除了和普通人相同的以外还有职业相关的行为比如改考卷讲课等等我们把这些行为定义成无body的方法作为一个集合它是一个interface而教师张三李四的各自行为特点又有不同那么他们就可以扩展自己的行为body从这点意义上来说interface偏重于行为

总之在许多情况下接口确实可以代替抽象类如果你不需要刻意表达属性上的继承的话

上一篇:链接到外部类

下一篇:面向对象思想之 -- 继承以及多态