一、两个特定语法场景的辨析:
1、对象向下传递特性;
当一个对象($o1) 调用一个实例方法,然后,在该实例方法(f1)中又去“静态”调用另一个类的方法(f2),则在方法f2中,会自动获得在方法f1中的那个$this对象。
对比:
可见f2方法直接调用会产生严重错误(因为找不到$this)
2、static后期静态绑定特性:
可见static有3个不同含义的语法:
函数中的静态变量:
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;。。。。}
}
也指:不同的对象使用相同的方法,但得到不同的结果: