前言:什么是面向对象,对于初学者其实就是个噩梦,但是其实面向对象,也不可怕,我个人理解是:变量把具有一定作用的数据存起来,以便后面使用,而函数则是将经常使用的功能封装起来以便后面使用,而面向对象的思想其实把拥有重复使用的变量和函数组装起来的一种思想,分隔成一小块块的代码,以便管理和日后的维护.
(一)面向对象的三大特性(继承,封装,多态)
继承:子类继承父类,子类也同时拥有了父类的功能
封装:把有相同特性的代码断封装在一起
多态:即重写父类的方法
(二)什么是面向对象?
在我初学面向对象的时候,我也觉得特别难,因为很多书,都拿诸如汽车是一个类,而我的奔驰则是一个对象这样例子来举例,刚开始也是很懵,究竟什么是面向对象?
其实我的理解是这样的, 面向对象也是脱离不了面向过程的一种思维,举个栗子吧:比如我有一个需求,想吃早餐
那么如果我用面向过程的话:我要做早餐(烧水->下面->放盐等等的操作,其中的每一个环节都是紧紧相扣的)
如果我用面向对象就是在美团等等的外卖软件下单就好了,(而美团等的软件把做早餐的功能封装起来了,方便我们去用),这样的思想就是面向对象的思想
(三)面向对象类成员介绍
定义类的关键字: class 类名 { 类成员 }
要想使用类里面的成员则需要: 对象 = new 类名() ;
类属性(相当于面向过程的变量)->分两种:普通类属性,静态类属性 类成员分类(包括3类): 类方法(相当于面向过程的函数)->分两种:普通类方法,静态类方法
类常量(相当于面向过程的常量)->只有它自己一种
1.如何定义类的成员(把成员放在类里面)
静态成员属性: public static $height=1.78;
非静态成员属性: public $name='zhangsan';
-----------------------------------------------------------
静态成员方法: public static function(){ 逻辑方法 }
非静态成员方法: public function(){ 逻辑方法 }
-------------------------------------------------------------
类常量: const AREA = '广东'
2.如何调用类的成员
静态的调用方法: 类名::静态成员
非静态: 对象->非静态成员
类常量: 类名::类常量
类的内部调用:
内部调用非静态属性: $this->属性名 内部调用静态属性: 类名::$属性名
内部调用非静态方法: $this->方法名()
内部调用静态方法 : 类名::方法名()
内部调用类常量: 类名::常量名
类的外部调用:
外部调用非静态属性: 对象->属性名 外部调用静态属性: 类名::$属性名
外部调用非静态方法: 对象->方法名()
外部调用静态方法 : 类名::方法名()
外部调用类常量: 类名::常量名
(四)面向对象其他属性关系
1.对象间的"=="与"==="的关系
public function __construct([形参列表]){#方法体 和 返回值}
这个方法会在创建对象时候自动调用常用于初始化一些数据,php不负责定义只负责调用
4.析构方法
public function __destruct([形参列表]){#方法体 和 返回值}
这个方法会在对象销毁时候自动调用常用于销毁数据,php不负责定义只负责调用
5.对象引用传值和值传递的关系
6.对象的克隆(生成一个全新对象的方法)
新对象 = clone 对象
__clone方法会在克隆一个新的对象时候创建