今天看了篇文章讲抽象类(abstract class)和接口(interface)的区别。文章讲了很多,我觉得两者的区别和联系实际上就是一个事:
抽象类是接口的更进一步具体。或者反过来说,接口是抽象类的更上一层抽取。
抽象类一般有一些通用的方法的实现,接口则仅仅是实现了一种契约规则。使用抽象类的好处是,如果修改这一个大类(类似于生物分支中的门纲目等),那么这个门纲目下的所有的种类都会进化到新的行为中。
接口仅仅是说具有某些方法,这些方法的“外观”是定义好的,具体爱怎么干就怎么干。
抽象类多来定义一些更上一层的归类,接口则是仅仅定义了一些特征。
抽象类是接口的更进一步具体。或者反过来说,接口是抽象类的更上一层抽取。
抽象类一般有一些通用的方法的实现,接口则仅仅是实现了一种契约规则。使用抽象类的好处是,如果修改这一个大类(类似于生物分支中的门纲目等),那么这个门纲目下的所有的种类都会进化到新的行为中。
接口仅仅是说具有某些方法,这些方法的“外观”是定义好的,具体爱怎么干就怎么干。
抽象类多来定义一些更上一层的归类,接口则是仅仅定义了一些特征。