第七章:第20节 PHP面向对象——最终章节(面向对象3大思想特征)

更新于:2019-10-28 21:07:49

前19节面向对象主要的知识已介绍完,这一节再做些零碎的知识介绍:


与类有关的魔术常量:


__CLASS__,:获取其所在的类的类名。

__METHOD__:获取其所在的方法的方法名。


1.png

1.png

函数get_class()也可以得到类名,但其必须有个“对象”。


有关类和对象的系统函数:


class_exists(), :判断某个类是否存在(定义过)

interface_exists(), :判断接口是否存在

get_class():获取某个对象的“所属类名”

get_parent_class(), :获取某个对象的“所属父类的类名”

get_class_methods(), :获取一个类的所有方法,返回一个索引数组,就是这些方法的名字。

get_class_vars(), :获取一个类的所有属性,返回一个数组,下标为属性名,值为属性值。

get_declared_classes():获得所有声明过的类(含系统中的类)

is_object():判断是否对象

get_object_vars():获得对象的所有属性,返回一个数组,下标为属性名,值为属性值


对象的运算符:


对象的运算符就两个,一个是“new”,这个我们用的太熟悉了。

还有一个:“instanceof”——判断一个对象是否是某个类的“实例”


1.png


1.png


注: instanceof Closure判断是不是闭包。《php中`Closure`和`Callable`的区别


对象比较:


当使用比较运算符(==)比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值 都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。


而如果使用全等运算符(===),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)。


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


面试的时候,一说起面向对象,经常会问面向对象的三大思想特征是什么?


其实我们都已学过了:封装、继承、多态


封装:


封装最好理解了,就是把数据“封闭”起来,尽量不给别人看到。

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


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


封装指的就是对类成员设置访问修饰符。


继承:


继承也是很重要的特征,前面我们讲了好多示例。


它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。


通过继承创建的新类称为“子类”或“派生类”。


被继承的类称为“基类”、“父类”或“超类”。


在某些 OOP 语言中,一个子类可以继承多个基类。但是在PHP中,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现,或者使用traits新特性。


多态:


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

 

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

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

class A{

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

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

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

}

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


1.png


多态指的就是类的重写与重载。


在C++中,多态专指的是重写,因为它的多态成立条件之一必须要有继承。


本节学习代码》》》