1. 学习面向对象的目标:
a) 语法的学习:
b) 编程思想的学习:
i. 过程化:
ii. 面向对象:
2. 比较(有对象和没对象的区别)
a) 没对象:
i. 我饿了 自己做饭
ii. 我渴了 自己烧水
iii. 衣服脏了 自己去洗衣服
iv. 空虚寂寞了 自己去玩LOL
b) 有对象
i. 我饿了 对象给我去做饭
ii. 我渴了 对象给我去烧水
iii. 我衣服脏了 对象给我去洗衣服
iv. 我空虚寂寞了 对象和我一块玩LOL游戏
c) 面向对象的核心,就是让对象帮我们去实现指定的功能
3. 对象:具有一定功能和特征的单个事物,称之为对象
a) 对象是实际存在的一个事物
4. 类:具有相同功能和特征的对象的抽象,称之为类
5. 类和对象的关系:
a) 类的实体化(实例化)就是一个对象
b) 对象的抽象就是类
6. 类比:
a) 马良 马良画的画 从画中走出来的人
b) 程序员 类 对象
c) 设计师 设计的图纸 由设计稿建造出来的建筑
7. 如何来声明一个类:(相当于正在设计图纸)
a) 格式:class 类名{}
b) 命名:首字母大写的驼峰命名法进行命名
c) 标识符命名规则:字母、数字、下划线,首字母不能为数字,严格区分大小写,且不能使用关键字
d) 声明成员属性:
i. 注意:
1. 必须给定成员修饰符(Public、Protected、Private)
2. 成员属性的默认值(初始值)可以不给
3. 成员属性赋初始值时
a) 不能使用变量赋值
b) 建议不要使用计算来给成员属性赋值
c) 不能使用函数调用方式给成员属性赋值
4. 变量的数据类型:
a) 四种标量:整型、浮点型、字符串型、布尔型
b) 两种复合:对象、数组
c) 两种特殊:资源、null空
5. 常量可以存放的数据类型:
a) 4中标量类型和null空型
e) 成员方法的声明:
i. 注意
1. 成员方法就是一个函数,在类当中我们称之为方法
2. 跟成员属性的声明方式类似,成员方法,也需要给定一个成员修饰符(public、protected、private)
3. 成员方法的参数是可有可无的
4. 成员方法的返回值和代码体都是可有可无的!
5. 函数在我们不指定return的时候,或者说,给定return但是后面没有值的情况下,返回的结果都是null
f) 类当中只能存在成员属性和成员方法,之外的内容都会报错!
g) 成员属性和成员方法的位置不固定,但是建议将成员属性写在前面
8. 对象的实例化:
a) 格式:变量名 =new 类名()
Object => 变量的类型
(Meinv) => 类名
[1] => 在当前脚本当中所实例化对象的索引号
1 //声明一个美女类(相当于设计的过程) 2 class Meinv{ 3 4 //特征 => 成员属性 5 public $name; 6 public $sex; 7 public $age=18; 8 public $tall; 9 10 //功能 => 成员方法 11 public function eat(){ 12 echo ‘我正在吃东西!‘; 13 } 14 15 public function drink(){ 16 echo ‘我正在喝东西‘; 17 } 18 19 public function talk($someone){ 20 echo ‘我正在和‘.$someone.‘说话!‘; 21 } 22 } 23 24 //实例化(实体化) 25 $lingling = new Meinv(); 26 27 //成员属性的操作 28 $lingling->name = ‘玲玲‘; 29 $lingling->sex = ‘女‘; 30 $lingling->age = 20; 31 $lingling->tall = 160.00; 32 33 var_dump($lingling); 34 35 //结果 36 object(Meinv)[1] 37 public ‘name‘ => string ‘玲玲‘ (length=6) 38 public ‘sex‘ => string ‘女‘ (length=3) 39 public ‘age‘ => int 20 40 public ‘tall‘ => float 160
b) 注意:
i. 类名后面的小括号可有可无,但是我们建议加上
ii. 对象的实例化可以在类的声明之前,也可以在类的声明之后
iii. 成员访问符: ->
1 //声明一个手机类 2 3 class Phone{ 4 5 //成员属性 6 public $brand; 7 public $size; 8 public $color; 9 10 //成员方法 11 public function call($someone){ 12 echo ‘我正在给‘.$someone.‘打电话<br/>‘; 13 } 14 15 public function sendMessage($someone){ 16 echo ‘我正在给‘.$someone.‘发短信<br/>‘; 17 } 18 19 } 20 21 //实例化类 22 $apple = new Phone(); 23 24 //初始化成员属性信息 25 $apple->brand = ‘苹果‘; 26 $apple->size = ‘4.7inch‘; 27 $apple->color = ‘红色‘; 28 29 //进行成员属性的操作 30 //成员属性的添加 31 $apple->price = ‘5799元‘; 32 //成员属性的删除 33 // unset($apple->color); 34 //成员属性的修改 35 $apple->size = ‘5.5inch‘; 36 //成员属性的访问 37 echo $apple->brand; //苹果 38 echo $apple->size; //5.5inch 39 echo $apple->price; //5799元 40 41 //进行成员方法的操作 42 $apple->call(‘范冰冰‘); //我正在给范冰冰打电话 43 $apple->sendMessage(‘李冰冰‘); //我正在给李冰冰发短信
9. $this 特殊的变量
a) 名字特殊
b) 只能在类的内部当中的成员方法中使用
c) $this 代表了正在访问当前方法的对象
10. 构造方法:
a) 本质:也是一个成员方法,是一个特殊的成员方法
b) 名字:__construct、和类名同名的方法都属于构造方法,我们推荐使用__construct;
c) 执行场景:当我们实例化一个类时,会自动调用__construct方法
d) 作用:初始化对象
11. 析构方法:
a) 本质:也是一个成员方法,是一个特殊的成员方法
b) 名字:__destruct
c) 执行场景:当我们对象被销毁的时候,自动执行
1 //声明一个汽车类 2 class car{ 3 4 //成员属性 5 public $brand; 6 public $type; 7 public $price; 8 9 //成员方法 10 public function __construct($brand,$type,$price){ 11 //给成员属性赋值 12 $this->brand = $brand; 13 $this->type = $type; 14 $this->price = $price; 15 16 echo $this->brand.‘创建<br/>‘; 17 } 18 19 public function drive(){ 20 echo ‘我正在开车,么么哒!!‘; 21 } 22 23 public function carry($someone){ 24 echo ‘我正在载着‘.$someone.‘找女朋友!‘; 25 } 26 27 //析构方法,当我们的脚本执行完毕时会自动执行 28 public function __destruct(){ 29 echo $this->brand.‘销毁<br/>‘; 30 } 31 32 } 33 34 //实例化一个奔驰车 35 $benz = new car(‘奔驰‘,‘越野‘,‘200w‘); 36 37 $baoma = new car(‘宝马‘,‘敞篷‘,‘180w‘); 38 39 //结果 40 奔驰创建 41 宝马创建 42 宝马销毁 43 奔驰销毁