我听说我们可以通过继承实现代码可重用性,例如:从超类A开始,如果扩展并且假设两个类都在同一个包中,我们可以将除私有方法之外的方法继承到类B.如果这是在继承中实现代码可重用性的方法,那么我们也可以通过创建该类A的对象来获得相同的权利吗?我的意思是通过创建一个对象,我们可以访问除私有方法之外的公共方法吗?为什么我们需要继承?继承中的代码重用性是什么?
答案 0 :(得分:2)
告诉你的是谁给了你"坏"建议。
继承的主要目标是不,以便重复使用代码。
课程旨在构建现实的模型(又称抽象);更具体地说:一个有用的模型。其中一个核心部分是:您不会记下class A extends B
因为方便这样做,或者因为它可以帮助您节省一些编码工作。
你这样做,因为在你的问题域中,任何A 是-A B都是有意义的。这是继承的核心:两个对象显示相同行为。
并且:恰恰相反,更相关和被接受的范式恰恰相反:FCoI(赞成合成而不是继承)。
请不要误解我的意思:代码重复是您作为程序员可以做的最差之一。因此,避免代码重复是良好编程的核心优点之一。但是:继承创建了类之间的耦合;通过放弃类的隔离来防止代码重复不是一个好主意。由于继承可以阻止您在另一个上下文中重用类。
含义:有时继承可以很好地防止代码重复;但是你必须要小心。