也谈谈抽象类和接口的区别

前面有朋友发表过一篇名为“你看不懂的抽象类和接口的区别 ”的博文,我觉得作者博客的内容没有很好的诠释“你看不懂的抽象类和接口的区别”这个标题。
我来说说自己的看法。

 

先举个例子,以方便大家理解,然后从例子中抽象概括出结论。

比如,一家生产门的公司,需要先定义好门的模板,以便能快速生产出不同规格,功能的门。
这里的模板通常会有两类模板:抽象类模板和接口模板。
抽象类模板:这个模板里面应该包含所有门都应该具有的共同属性(如,门的形状和颜色等)和共同行为(如,开门和关门)。
接口模板:有些门可能需要具有报警和指纹识别等功能,但这些功能又不是所有门必须具有的,所以像这样的行为应该放在单独的接口中(如,带有报警功能的接口和带有指纹识别功能的接口)。
有了上面的两类模板,以后生产门就很方便了:利用抽象类模板和包含了报警功能的接口模板就能生产具有报警功能的门了。同理,利用抽象类模板和包含了指纹识别功能的接口模板就能生产具有指纹识别功能的门了。

 

结论:

1.抽象类用来对自然界一些具有相似/共同性质和相似/共同行为的事物进行抽象,用一个抽象的类来表达,从而概括出这类事物的核心性质和核心行为。注意,抽象类是对事物进行了抽象,以后想得到这类事物中的某一个的时候,直接通过抽象类就能得到。

2.而接口用来对一些事物的相似/共同行为进行抽象,注意,接口只是对行为进行了抽象,而不关心具有该行为的事物是否属于同一类。

有了抽象类和接口,当我们想生产出具体的某个对象时,只需要从抽象类继承核心性质和行为,再选择性的从不同的接口中得到一些特殊的功能。

 

这是我自己的看法,欢迎大家和我探讨这个问题。在看到大家的反馈后,我可能会不断修改该博文,以希望最后能得到一个大家都比较认可的结论。

 

posted @ 2011-04-30 21:24  JeffLiang  阅读(2121)  评论(14编辑  收藏  举报