2015-02-06 99 views
-4

谁能告诉我什么是php.Thanks的主要优点和继承/多层次的传承的缺点提前:)优势和PHP传承的缺点

+0

http://php.net/manual/en/language.oop5.inheritance.php – user3647254 2015-02-06 10:29:04

+0

downvote我的答案是什么原因? – Priyank 2015-02-06 10:31:47

+0

为您的答案或问题。 (我没有downvoted你的答案) – user3647254 2015-02-06 10:33:44

回答

2

优点: -

一继承的主要好处是通过在几个子类中共享通用代码来最小化应用程序中重复代码的数量。在两个相关类中存在等价代码的情况下,通常可以重构层次结构以将公共代码移动到相互超类。这也会导致更好的代码组织和更小,更简单的编译单元。

继承还可以使应用程序代码更加灵活地更改,因为从公共超类继承的类可以互换使用。如果一个方法的返回类型是超类

复用性 - 设施使用基类的公共方法,不重写相同 扩展性 - 延伸的基类逻辑按照派生类 数据隐藏的业务逻辑 - 基类可以决定保留一些数据的私有性,使其不能被派生类改变

覆盖 - 通过继承,我们将能够覆盖基类的方法,以便基类方法的有意义的实现可以在派生类中设计。

缺点: -

  1. 一个继承的主要缺点是增加的时间/精力花费的方案,通过重载类的所有级别跳跃。如果一个给定的类有十个抽象级别,那么它将基本上需要十次跳转才能运行在每个类中定义的函数。

  2. 使用继承的主要缺点是两个类(基类和继承类)紧密耦合。 这意味着一个不能彼此独立使用。

  3. 同样随着时间的推移,在维护期间添加新功能时,需要更改基类以及派生类。如果一个方法签名改变,那么我们将受到影响在两种情况下(继承&组成)

  4. 如果一个方法是在“超类”或集合中删除,那么我们将不得不重新因子使用的情况下,该方法。在继承的情况下,事情会变得有点复杂,因为我们的程序仍然会编译,但是子类的方法将不再覆盖超类方法。这些方法本身就会成为独立的方法。

1

不知道这是否适合这类问题,但可以。

比方说,你有一些基本的课Base,其他类都延伸。在基础中,您可以定义所有其他类可以使用的事物,例如连接到mysqli,所以所有的类都可以使用$this->mysqli并且不需要声明它。

我建立了一个电子商务cms,我在这里使用它。我还定义了一种名为getLink()的方法,该方法检查是否有方法getUrl()getTitle()。这些方法在每个子类中定义(在我的CMS ProductCategory ...中)。我们采用Product类,也有getUrl()getTitle()方法,但方法getLink()Base中,其中Product延伸。我几乎在任何地方都使用方法getLink(),所以如果我不想写在每个班级,我只是写在Base,我可以使用它。

我的CMS的另一个例子:在Base构造我有一个检查,如果输入名称global_update提交。它将检查$this->table$this->id是否被定义,如果是,它将用数据更新数据库。否则,我需要为每个更新操作定义一个处理程序。通过这种方式,我为每个类都有一个全局变量,我只为更复杂的表单编写自己的处理程序。

我希望这是可以理解的,如果没有,评论和问。