Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 在面向对象语言中使用子类是如何实现其中一种类型的?_Oop_Types_Subclassing_Ml - Fatal编程技术网

Oop 在面向对象语言中使用子类是如何实现其中一种类型的?

Oop 在面向对象语言中使用子类是如何实现其中一种类型的?,oop,types,subclassing,ml,Oop,Types,Subclassing,Ml,从编程语言课程的第2页第二段 在具有类(如Java)的面向对象语言中,其中一种类型是 通过子类化实现 这里所指的类型之一是编程语言研究人员通常称之为和类型的类型,例如ML中的选项类型以及C和Java中的枚举类型 有人建议,在面向对象的语言中,如果W是X和Y的超类型,那么W是类型之一,因为W的子类型是X或Y。但是我想知道,如果W的子类型是Z,比如说X,那么W的子类型可能是X和Z 这有点令人困惑,但将Z作为X的子类型作为W的子类型的想法是否与将每个类型aka产品类型嵌套在一个类型(即W)中的想法相同

从编程语言课程的第2页第二段

在具有类(如Java)的面向对象语言中,其中一种类型是 通过子类化实现

这里所指的类型之一是编程语言研究人员通常称之为和类型的类型,例如ML中的选项类型以及C和Java中的枚举类型

有人建议,在面向对象的语言中,如果W是X和Y的超类型,那么W是类型之一,因为W的子类型是X或Y。但是我想知道,如果W的子类型是Z,比如说X,那么W的子类型可能是X和Z

这有点令人困惑,但将Z作为X的子类型作为W的子类型的想法是否与将每个类型aka产品类型嵌套在一个类型(即W)中的想法相同


如果我对整个概念的理解是错误的,那么在面向对象语言中使用子类是如何实现其中一种类型的?

我看到的大多数OOP文献都倾向于考虑is-a继承和has-a组合关系。这听起来像是有人试图从另一个方向来看待遗传关系,一种动物是猫、狗、马、猪。。。猫不是动物,而是动物等等。。可能有一些很好的原因,文学倾向于从它的方向来看待它,因为这一概念似乎令人困惑,但也许这只是因为我更习惯于另一种方式。。。也许更难正确地解释。。。没有阅读链接,尽管…@twalberg这可能不是以这种方式看待它的好处的最完美的例子,但正如注释所示,其中一种类型的好处之一是在不同的情况下使用不同的数据。例如,如果一个学生是用他们的ID号或他们的名字识别的,如果他们没有ID,那么一个值为数字或字符串的类型将是一个不错的选择。如果你将它应用到面向对象语言中,假设我得到了正确的结果,那么有一个具有2个子类名称和编号的类ID可以用来实现相同的任务。这个描述使它听起来更像C或C++使用的联合或Pascal的变体类型——我忘记了他们被调用的或它们是如何使用的;自从我的帕斯卡时代以来,它已经是一个漫长的时代了——一个单一的类型,在任何一个时间点上都可能代表一个具体的类型,一个整数或浮点数或字符串,但是在一些赋值操作之后,它可能有一个完全不同的类型…@twalberg是的,我已经知道了一些。我想我理解类型之一的概念,我只是不确定我是否完全理解如何在面向对象语言中使用子类来实现这一点。正如你所看到的,这有点令人困惑。