为了账号安全,请及时绑定邮箱和手机立即绑定

这两句有点绕,感觉有点矛盾,怎么理解

  1. 一个父类的实例不能是子类类型,因为子类比父类多了一些属性和方法。

  2. s 也是Person类型,因为Student继承自Person,虽然它比Person多了一些属性和方法,但是,把 s 看成Person的实例也是可以的。

正在回答

7 回答

在程序上这个也叫多态

0 回复 有任何疑惑可以回复我~

简单来说,子类是继承父类全部的属性和方法的,也就是说子类的功能>=父类,所以,父类不可能是子类的类型,因为子类的功能可能大于父类,但是子类一定是父类因为子类>=父类。

从集合关系来说,是包含关系,子类包含父类,父类不包含子类


0 回复 有任何疑惑可以回复我~

举个例子说明:父类是四边形,子类是正方形,四条边相等且四个角都是直角的四边形才是正方形。此时四条边相等且四个角都是直角就是子类多出来的属性。

第一句话:父类的实例不是子类,四边形不一定是正方形,因为正方形有更多的属性;

第二句话:好比说:虽然正方形有更多的属性,但正方形也是四边形的一种实例。

1 回复 有任何疑惑可以回复我~

也可以把父类比作‘水果’,子类比作‘葡萄’。可以把葡萄说成水果,但不能说水果就只是葡萄

0 回复 有任何疑惑可以回复我~

子类比父类具有更多的属性。‘懒懒的高贵000’举的例子不太恰当,因为有时四边形可能是正方形,而父类的实例永远不可能是子类类型。

举个更贴近的例子,父类是“男人”,子类“人妖”,子类的实例符合父类的要求,人妖也是男人,是特殊的男人。反过来,父类的实例不满足子类的属性要求,不能说男人是人妖。

0 回复 有任何疑惑可以回复我~

有一个比较粗俗的但是个人觉得比较好理解的。

有个父亲把他孩子丢了,孩子最后被人捡了 。 父亲和他这个丢掉的孩子没有一点关系了,但是孩子的父亲永远是他

0 回复 有任何疑惑可以回复我~

子类是父类的一个延伸,它除了拥有父类的所有属性外还有自己的属性,所以父类的实例不能是子类,子类却可以是父类。就比如四边形和正方形,四边形是父类,正方形是子类,你可以说正方形是四边形,但四边形却不一定是正方形。

4 回复 有任何疑惑可以回复我~
#1

zisu

个人觉得,“所以父类的实例不能是子类”这句话应该纠正为“所以父类的实例不可以是子类类型”。因为子类可以看作是父类的实例
2019-03-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

这两句有点绕,感觉有点矛盾,怎么理解

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信