两个特定语法场景与3大思想特征

一、两个特定语法场景的辨析:

1、对象向下传递特性;

  当一个对象($o1) 调用一个实例方法,然后,在该实例方法(f1)中又去“静态”调用另一个类的方法(f2),则在方法f2中,会自动获得在方法f1中的那个$this对象。

       

  对比:

       

    可见f2方法直接调用会产生严重错误(因为找不到$this)

 

2、static后期静态绑定特性:

     

可见static3个不同含义的语法:

函数中的静态变量:

function  f1(){

  static $v1 = 1;

}

类中的静态成员:

class A{

  static  $v1 = 1;

  static  function f1(){}

}

方法中的动态指代“当前类”:

class A{

  function f1(){

    static::f2();//static此时指代调用f1这个方法的类(或对象的类)

    self::f2(); //self这里永远指代当前A这个类。

  }

}

二、面向对象3大思想特征介绍:

1、封装:

(1)是什么:就是把数据“封闭”起来,尽量不给别人看到。

(2)最基本封装:面向对象的基本语法“类的定义”形式,可以认为是最基本封装——封装了很多数据到某个类(对象)。

(3)但:

  更严格(更常说)的封装,是尽量将属性做出“私有的”——并通过共有的方法来向外提供对该属性的“可控性操作”:

        

2、继承:

      https://www.cnblogs.com/wjglm/p/9758724.html

3、多态:

  (1)多态:看起来用的是相同的东西(方法),但会得到不同的结果。

  (2)通常是指:一个对象可以使用相同的方法(动作)但得到不同的结果:

    (这里是其他常见面向对象语法示例:)

class A{

  function  f1($x ){....做事情1;。。。。}

  function  f1($x, $y ){....做事情2;。。。。}

  function  f1($x, $y, $z ){....做事情3;。。。。}

}

  也指:不同的对象使用相同的方法,但得到不同的结果:

     

原文地址:https://www.cnblogs.com/wjglm/p/9811442.html