继承是什么和应该是什么
fixopen() 09:32:22
继承,类不变性之间的关系是不是很亲密?
继承仅仅表达为增加特有的属性是不是不够完善?是不是还要有对已有的属性进行限制的能力才完善?类不变性可以非常自然的为heir增加parent原有属性的限制。
考虑多边形与矩形的继承关系。矩形就是边数为4,相邻边正交的多边形。可惜的是,如果没有对多边形原有属性的限制,很难表达这种继承关系,也导致了很少有人这样使用继承,非常自然和直观的继承。
狐狸发 () 09:37:22
有的时候最好不要用继承来描述普遍-特例这样的关系
一棵大白菜() 09:38:12
why?这是抽象性的表达方法
狐狸发 () 09:38:15
一般这种情况都是人为的经验性的行为,并不符合事物演化的规律
fixopen() 09:38:18
为什么?继承不就是用来描述这样的关系的么?
狐狸发 () 09:39:07
你说三角形和等边三角形有什么继承的关系么,还是人为的这样认为?
fixopen() 09:39:05
是因为现有语言大多数都不支持类不变性导致我们不能这样自然的描述吧。
fixopen() 09:39:28
等边三角形自然是三角形的heir。你不觉得?
一棵大白菜() 09:39:32
比如:大家来吃饭啦-〉fixopen,狐狸,无限....来吃饭啦
狐狸发 () 09:40:35
等边三角形只是3条都相等,只是属性上有区别,他就是三角形
一棵大白菜() 09:40:52
三角形具有等边三角形等其它特异三角形的通性
fixopen() 09:41:03
是啊,所以等边三角形继承自三角形非常自然和直观啊。
狐狸发 () 09:41:27
这时候不应该用继承来描述
fixopen() 09:41:28
可惜的是,我们的大多数OO语言都不能自然的表达这种关系。
fixopen() 09:41:42
你认为应该用什么来描述?
fixopen() 09:42:01
或者说,你认为继承的作用是什么?继承是用来干什么的?
狐狸发 () 09:42:19
子类应该拥有比父类更特殊的属性,普通三角形也有机会3条边都相等
一棵大白菜() 09:42:47
继承这个词可能会引起歧义,继承跟现实生活中的这个词含义是不同的
一棵大白菜() 09:43:03
代表泛化的反向
bighammer() 09:43:18
狐狸说的也很有道理:普通三角形也有机会3条边都相等 ,不过某个基类的作为一种派生类存在也是很正常的
fixopen(19710496) 09:43:22
按照你的说法,Window也可能有就是Button的机会,所以,Window派生出Button是不对的?
狐狸发 () 09:43:41
button有windows所没有的特性
fixopen() 09:43:46
有么?
一棵大白菜() 09:44:03
普通三角形也有机会3条边都相等那就是等边三角形啦,既是等边三角形,又是三角形
狐狸发 () 09:44:07
可以按,并触发一个事件
bighammer() 09:44:18
呵呵,可能我表达的有点不清楚,就是说普通三角形可以是等边三角形这一事实与OO里的继承不违背
fixopen() 09:44:25
一棵大白菜() 09:42:47
继承这个词可能会引起歧义,继承跟现实生活中的这个词含义是不同的
一棵大白菜() 09:43:03
代表泛化的反向
我也是这样认为的呀,继承就是特化嘛。
fixopen() 09:44:45
狐狸发 () 09:44:07
可以按,并触发一个事件
Window照样可以按,并触发一个事件。
狐狸发 () 09:45:18
我不这么觉得,我觉得等边三角形就是三角形并加上一个约束
一棵大白菜() 09:45:33
button是老婆奶头的父类
狐狸发 () 09:46:37
泛化和特例不光有继承的手法
还可以用分类的手法
fixopen() 09:46:48
现在你们就是不承认我们现在常用的OO语言有缺陷?
狐狸发 () 09:45:18
我不这么觉得,我觉得等边三角形就是三角形并加上一个约束
这句话说得太多了,事件所有的继承都是如此。
人是哺乳动物加上一些约束定义的。Button是Window加上一些约束定义的。
fixopen() 09:47:03
太多了-->太对了。
狐狸发 () 09:47:16
普通window不能成为一个button
狐狸发 () 09:47:32
button拥有普通window不具备的特性
fixopen() 09:47:34
在我看来,继承就是分类。
fixopen() 09:47:50
普通哺乳动物也不能成为一个人。
狐狸发 () 09:47:56
那你就这样认为好了
fixopen() 09:48:19
人也拥有普通哺乳动物不具备的特征。
狐狸发 () 09:48:52
人并来就是哺乳动物的子类
++oeqe() 09:49:08
button也室window的子类啊。。
狐狸发 () 09:49:38
这我也承认啊
狐狸发 () 09:49:51
我没说button不是window的子类吧
狐狸发 () 09:50:16
但是一个4边相等的window是window的子类吗
++oeqe() 09:50:36
这个属于数学集合论的范畴
bighammer() 09:50:43
这跟矩形与多边形得例子有什么区别
一棵大白菜() 09:50:52
你说为什么不是?
狐狸发 () 09:51:14
因为没人定义4边相等的window是一个特例,所以你没感觉吧
fixopen() 09:51:38
我怎么不知道你在说什么呢?
fixopen() 09:51:52
Window有四边不相等的么?
一棵大白菜() 09:51:57
没人用当然就没人定义
狐狸发 () 09:51:59
这和等边三角形一样,如果没人把等边三角形定义为一个特例,你也不会有继承的关系吧
狐狸发 () 09:52:13
你也不会觉得有继承的关系吧
fixopen() 09:52:38
关键是,你用继承表达什么?
狐狸发 () 09:52:45
这只是经验行为,而不是演化
fixopen() 09:52:52
是不是表达一个集合的特定子集?
fixopen() 09:53:07
继承用来表达演化?
狐狸发 () 09:53:23
继承就是演化啊
fixopen() 09:53:23
这是你说的呢,还是公认的?
一棵大白菜() 09:53:33
代表特化,跟模板本质一样
狐狸发 () 09:53:46
基类->派生类
这就是一种进化
一棵大白菜(301464) 09:53:33
代表特化,跟模板本质一样
狐狸发 (99643412) 09:53:46
基类->派生类
这就是一种进化
狐狸发 () 09:54:23
如果你认为是一种子集,那么未知的子类怎么考虑呢
狐狸发 () 09:54:37
他现在根本不在集合里
fixopen() 09:54:39
那么,你觉得人是哺乳动物概念的演化么?
狐狸发 () 09:55:02
当然是
狐狸发 () 09:55:30
应该说人是某种哺乳动物进化而来
狐狸发 () 09:55:56
应该说人是某种哺乳动物进化而来
所以人继承了哺乳动物的特性
fixopen() 09:55:59
莫非我们对哺乳动物研究的越深入,我们对哺乳动物的概念越清晰,结果,哺乳动物就是人?
狐狸发 () 09:56:37
看来你对演化的词理解有问题
狐狸发 () 09:57:00
人可以是哺乳动物,但哺乳动物不一定是人
fixopen() 09:57:28
stop,我看到你又在引入一个概念叫作进化,继承是表达进化还是演化。
或者,你说得演化就是进化?
我还以为你说得演化是我们对概念感觉的变化呢。看来你想表达的是进化:)
一棵大白菜() 09:57:35
就是建模的详细程度,不管你认识是否足够
狐狸发 () 09:58:04
好吧,我们就把这个词确定为进化
炮炮() 09:58:30
Evolution Complete!
fixopen() 09:58:37
我同意大白菜。
不同意狐狸发。
我认为狐狸发在某种程度上属于偷换概念。
一棵大白菜() 09:59:25
关键是:分歧在哪里?我都没搞明白
fixopen() 09:59:24
如果是进化的话,你认为形状可以进化为三角形?
fixopen() 10:00:12
我们对形状建模的越详细,它就越是三角形?
狐狸发 () 10:00:28
我说了,有些概念用继承来描述并不好
而不是所有的东西都用继承来描述
一棵大白菜() 10:01:03
我们对形状建模的越详细,越能代表多的特例三角形类别
狐狸发 () 10:01:06
象模板特化就不是继承关系
fixopen() 10:01:13
我知道用现在的OO语言的继承来描述不好,可我说得是:我认为现在的OO语言有缺陷。
狐狸发 () 10:01:28
这更偏向与分类
一棵大白菜() 10:01:28
用词不同而已
fixopen() 10:02:13
麻烦你仔细看看我的初始描述。
fixopen() 10:02:45
继承,类不变性之间的关系是不是很亲密?
继承仅仅表达为增加特有的属性是不是不够完善?是不是还要有对已有的属性进行限制的能力才完善?类不变性可以非常自然的为heir增加parent原有属性的限制。
考虑多边形与矩形的继承关系。矩形就是边数为4,相邻边正交的多边形。可惜的是,如果没有对多边形原有属性的限制,很难表达这种继承关系,也导致了很少有人这样使用继承,非常自然和直观的继承。
狐狸发 () 10:02:53
麻烦你看看我最早的回复
fixopen() 10:03:23
我知道你的回复,你说最好不要,我认为用继承是自然的,而你认为不是。这就是分歧。
一棵大白菜() 10:03:43
对已有的属性进行限制?有此功能啊
狐狸发 () 10:04:20
我的观点是,有些概念并不是自然的,是人为经验化的,这样用继承去描述就很牵强
一棵大白菜() 10:04:24
子类可修改继承自父类的行为
一棵大白菜() 10:04:35
就是变异