我正在阅读一本我不理解以下关于继承的3个问题的书:
1)首先,您不能在运行时更改从父类继承的实现,因为继承是在编译时定义的。
2)其次,通常更糟的是,父类通常会定义其子类的物理表示形式的至少一部分。由于继承将子类公开给其父类的实现细节,因此人们常说“继承破坏了封装”。
3)子类的实现与其父类的实现紧密相关,以至于父类实现的任何更改都将迫使子类进行更改。
上面提到的所有要点均未提及任何代码段,因此我在理解以上3个要点时遇到问题。
如果有人可以通过代码示例帮助我理解以上三点,以及每一点在代码中的影响方式和作用,我将不胜感激。
答案 0 :(得分:0)
1)首先,您不能更改从父级继承的实现 类是在运行时创建的,因为继承是在编译时定义的。
这意味着这两个类之间的继承关系是在您编写的代码中建立的,并且在编译后,当代码执行时,无法更改。
2)其次,通常更糟的是,父类通常至少定义 子类物理表示的一部分。因为继承 向子类公开其父级实现的详细信息,即 经常说“继承破坏封装”。
如果您将某些父类作为子类,则通常意味着该子类也像具有某些扩展名和/或替代差异的父类。一些属性或行为很常见,您可以访问它。两者之间存在一定程度的共享知识,您可以将其视为信息泄漏。如果要不惜一切代价保存封装,那您就要破坏它了(但是有充分的理由)。如果不是这样,则继承将毫无用处。
3)子类的实现变得与 父类的实现,即父类的任何更改 实施将迫使子类更改。
我没有这三个子句的上下文,但是是的,它们必须在一定程度上结合在一起,取决于具体情况,父级中的多少变化会影响子类。