zoukankan      html  css  js  c++  java
  • php 构造方法

    这是我第一次写 博文。

    我想说的是php创建一个类的实例的时候,构造方法调用的问题。

    php中不像java一样,创建一个class的实例的时候 会自动的首先调用父类(超类)的构造方法,以确保所有的属性都可以被正确的初始化。php 不会在本类的构造方法中再自动的调用父类的构造方法。如果真的需要调用父类的构造方法,可以手动的调用parent::__construct($params...);   

        class Base{

        function __construct(){

          //do sth here....

        }

      }

    如果我们需要些一个Extender 来继承Base,我们需要注意的是

    1、我们是否需要调用父类的构造方法用于初始化

    2、我们是否需要在父类构造方法的基础上在进行其他的一些扩展操作

    3、我们不需要Base构造方法中的那些初始化动作。

    如果我们的Extender 只满足情况1,那么我们可以省略Extender的构造方法,因为父类的构造方法完全符合我们的要求,我们就没有必要再进行额外的编码。

    如果我们的Extender 满足情况2,那么我们要在 Extender的 构造方法中 先调用parent::__construct(),先进行初始化,然后 在进行一些扩展操作

    如果我们的Extender 满足情况3,我们可以选择不调用父类的构造方法。只是这样做有一个缺陷:我们再扩张Extender的时候,如果这个扩展类需要Base构造方法的初始化操作,这时候再调用parent::__construct() 只能调用 Extender的构造方法 而不能调用 Base 类的构造方法.

      所以,个人认为,最好还是在 子类的构造方法中手动的调用 父类的构造方法。

  • 相关阅读:
    控制台日志输入到文件指定文件中
    flutter环境搭建坑一
    hybridapp/webapp的前端UI框架推荐
    hybrid app、web app与native app工具
    浏览记录
    HTML5跨平台APP越来越火,工具也越来越多。我推荐一个开发平台(一款工具)----DCloud
    学个p-nan isnan . isna isnull
    学个p-np.triu(m, k),np.tirl()
    实验五 plsql基础
    实验四-数据插入、更新、删除
  • 原文地址:https://www.cnblogs.com/ainiaa/p/1705275.html
Copyright © 2011-2022 走看看