有谁能告诉我php.Thanks中的继承/多级继承的主要优点和缺点是什么:)
答案 0 :(得分:3)
<强>优点: - 强>
继承的一个主要好处是通过在多个子类之间共享公共代码来最小化应用程序中重复代码的数量。在两个相关类中存在等效代码的情况下,通常可以重构层次结构以将公共代码移动到共同超类。这也有助于更好地组织代码和更小,更简单的编译单元。
继承还可以使应用程序代码更灵活地进行更改,因为从公共超类继承的类可以互换使用。如果方法的返回类型是超类
可重用性 - 使用基类的公共方法而不重写基类的工具 可扩展性 - 根据派生类的业务逻辑扩展基类逻辑 数据隐藏 - 基类可以决定将某些数据保密,以便派生类
不能更改它重写 - 通过继承,我们将能够覆盖基类的方法,以便可以在派生类中设计有意义的基类方法实现。
<强>缺点: - 强>
继承的一个主要缺点是程序跳过所有级别的重载类所花费的时间/精力增加。如果给定的类在其上面有十个抽象级别,那么它将基本上需要十次跳转来运行在每个类中定义的函数
使用继承的主要缺点是两个类(基类和继承类)紧密耦合。 这意味着不能相互独立使用。
此外,随着时间的推移,在维护期间添加新功能时,需要更改基本类和派生类。如果方法签名被更改,那么我们将在两种情况下受到影响(继承和组合)
如果在&#34;超级班级中删除了一个方法&#34;或者聚合,然后我们将不得不重新考虑使用该方法的情况。在继承的情况下,事情会变得有点复杂,因为我们的程序仍然会编译,但子类的方法将不再覆盖超类方法。这些方法本身就会成为独立的方法。
答案 1 :(得分:1)
不确定这是否是此类问题的正确网站,但没关系。
假设您有一些基本的课程Base
,其他课程都会延伸。在基础中,您可以定义所有其他类可以使用的内容,例如连接到mysqli,所以所有类都可以使用$this->mysqli
而不需要声明它。
我建立了一个电子商务cms,我用这种方式。我还定义了一个名为getLink()
的方法,用于检查方法getUrl()
和getTitle()
是否存在。这些方法在每个子类中定义(在我的CMS Product
,Category
...)。我们采用Product
类,还有方法getUrl()
和getTitle()
,但方法getLink()
位于Base
Product
getLink()
1}}扩展。我几乎在所有地方使用Base
方法,所以如果我不想在每个课程中编写它,我只需在Base
中编写它就可以使用它。
我的CMS中的另一个示例:在global_update
构造中,我检查了是否提交了名为$this->table
的输入。它将检查是否定义了$this->id
和{{1}},如果是,它将使用数据更新数据库。否则,我需要为每个更新操作定义一个处理程序。这样我每个类都有一个全局,我只为更复杂的表单编写自己的处理程序。
我希望这是可以理解的,如果没有,请评论和询问。