• PHP面向对象 ——封装和继承


    面向对象的特征

      1 封装

      2 继承

      3 多态

    封装

      封装就是把对象的属性和行为结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节

      优点:信息隐蔽,封装即隐藏。

      封装的原则在软件上的反映是:要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的“交叉感染”,使软件错误能够局部化,大大减少查错和排错的难度。 

      类的封装性带来的优点:隐藏类的实现细节,让使用者只能通过事先定义好的方法来访问数据,可以方便的加入逻辑控制,进行数据检查,限制对属性的不合理操作。便于修改增强代码的可维护性

      //计算三角形的面积函数

      public function area($bottom, $height){

        return $bottom*$height/2;

       }

      如上的面积函数,我们只要把对应的参数底边长度和高度传递到该函数中,就可以得到计算的面积结果,至于具体的实现步骤和过程可以忽略,而由实现该面积计算功能的函数去处理。

      PHP 中通过将数据封装、声明为私有的(private),再提供一个或多个公开的( public)方法实现对该属性的操作,以实现下述目的:

        1.隐藏一个类的实现细节;

        2.防止对封装数据的未经授权的访问。使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;

        3.有利于保证数据的完整性;

        4.便于修改,增强代码的可维护性;

    继承

      什么是继承?

        1.继承是面向对象最重要的特点之一,就是可以实现对类的复用。

        2.通过“继承”一个现有的类,可以使用已经定义的类中的方法和属性。

        3.继承而产生的类叫做子类。

        4.被继承的类,叫做父类,也被成为超类。

        5.PHP 是单继承的,一个类只可以继承一个父类,但一个父类却可以被多个子类所继承。

        6.从子类的角度看,它“ 继承( inherit , extends) ”自父类;而从父类的角度看,它“派生(derive)

         子类。它们指的都是同一个动作,只是角度不同而已。

        7.子类不能继承父类的私有属性和私有方法。

      简单例子:动物------>狗

        class Animal{

          public $name='我是动物';

          public function getName(){

            return $this->name;

          }

         }

        class Dog extends Animal{

          public function __construct(){

            $this->name='这个是狗狗';

          }

        }

    访问控制

      在 PHP5 中,可以在类的属性和方法前面加上一个修饰符( modifier),来对类进行一些访问 上的控制

      

    重写

      如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖( override),也称为方法的重写。

      当对父类的方法进行重写时,子类中的方法必须和父类中对应的方法具有相同的方法名称, 在 PHP5 中不限制输入参数类型、参数数量和返回值类型。(这点和 JAVA 不同)

      子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。

    this

      PHP5 中为解决变量的命名冲突和不确定性问题,引入关键字“$this”代表其所在当前对象。

      $this 在构造函数中指该构造函数所创建的新对象

      在类中使用当前对象的属性和方法,必须使用$this->取值。

      方法内的局部变量,不属于对象,不使用$this 关键字取值。

    parent

      PHP5 中使用 parent::来引用父类的方法。

      parent:: 可用于调用父类中定义的成员方法。

      parent::的追溯不仅于直接父类。

  • 相关阅读:
    iOS NSData简单解析
    CocoaPods安装和使用教程
    iOS_ruby环境的配置
    ios进行打包
    Missing iOS Distribution signing identity问题解决
    iOS 打包
    效果类似于label从下往上滑(采用uiTableView实现)
    IOS开发效率之为Xcode添加常用的代码片段
    JS中!!的用法
    java 短路与(||)时报错The operator || is undefined for the argument type(s) int, boolean
  • 原文地址:https://www.cnblogs.com/q1345837355/p/7191770.html
Copyright © 2020-2023  润新知