jbr*_*nan 20 language-agnostic oop programming-languages
在集合论中,如果集合包含原始集合中的所有内容并且可能更多,则集合是超集.但是,子集不包含初始集的所有内容.
考虑到这一点,在大多数面向对象的编程语言中(我正在考虑Objective-C,但我知道Java和其他人也是如此),父类称为super
类,任何继承自super的类都是叫做subclass
.
这不是倒退吗?子类从其超类继承所有实例变量和方法之类的东西,因此它"包含"来自父类的所有内容,以及子类中添加的任何内容.这只是一个命名错误,还是故意的?如果是这样,为什么呢?
Gre*_*ill 21
超类定义一个具有更多可能值作为成员的类.子类限制可以作为其类的一部分的项,因此它定义了一组较小的可能成员.
超类的可能成员集是该超类的子类的可能成员集的超集.
格雷格是对的.要考虑的两件事可能会更清楚:
在集合论方面,属性和方法与子/超关系无关:
Taxomony示例:
所以在OOP术语中,People将是一个超类,而Programmer将是一个子类.每个程序员都是一个人,但不是每个人都是程序员.因此超类和子类.程序员类可能具有超越凡人的超能力这一事实不会改变类关系(is-a)语义.