日历

September 2020
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

subtype和subclass

Home Forums 《冒号课堂》讨论区 subtype和subclass

  • This topic is empty.
Viewing 4 reply threads
  • Author
    Posts
    • #1070
      Todd
      Member

      虽然subtype和subclass是OOP中最基本的问题之一,但我是在读《冒号课堂》的时候才开始注意到这个问题。我想国内的程序员不能区分subtype和subclass的不在少数。下面这个资料对于subtype和subclass讨论得比较深入,贴上来分享:

      http://www.cs.princeton.edu/courses/archive/fall98/cs441/mainus/mainus.html

    • #1241
      hui
      Keymaster

      非常好的文章,多谢分享。其中谈到subclass与subtype的区别时是这样说的:Subclasses allow one to reuse the code inside classes – both instance variable declarations and method definitions. Thus they are useful in supporting code reuse inside a class. Subtyping on the other hand is useful in supporting reuse externally, giving rise to a form of polymorphism。即:子类用于类的内部重用,子类型用于外部重用。这个与《冒号课堂》中提到的观点本质上是一致的:实现继承消费可重用的旧代码,接口继承生产可重用的新代码;接口继承不是为了代码重用,而是为了代码被重用。

      另:该文章的PDF版可到 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.9.7539&rep=rep1&type=pdf 下载。

    • #1242
      Todd
      Member

      是的,和《冒号课堂》的观点基本一致。区分了subtype和subclass就能把继承和多态的关系理清楚了。同时,对于以前不太容易区分的interface与abstract class的选择问题也会更清楚。使用interface是为了subtype,使用abstract class则包含了subtype和subclass。记得书中比喻abstract class是半成品。

    • #1243
      Todd
      Member

      CiteSeer是个好地方!

    • #1244
      hui
      Keymaster

      是的,CiteSeerx有大量高质量的学术文章。

Viewing 4 reply threads
  • You must be logged in to reply to this topic.
 请您评分1星(很差)2星(不行)3星(一般)4星(不错)5星(很棒)