面向对象的产生是因为落后的生产方式不足以满足计算机软件的快速发展而产生的。软件工程学分为结构化方法(分析、设计、编程)和面向对象。
面向对象编程OOP达到了软件工程的三个目标:重用性、灵活性、扩展性。
面向对象编程的三个特点:封装、继承、多态。

什么是类

打个比方,人就是属于一个类。狗属于犬类,狮子老虎属于猫类。他们都有一些共性。比如人都有一个鼻子两个眼睛两个耳朵两只手。

什么是对象

再打个比方,张三就属于一个对象。他属于人类,但是与其他人不一样的地方是 他的名字 年龄 等信息是他自己独有的。

认识面向对象

面向对象的性三个主要特性

  • 对象的行为 对象里面具体能干啥 也就是方法
  • 对象的状态 对象的属性 比如鼻子 眼睛
  • 对象的标识 对象名字 比如张三 李四 王二麻子

创造一个类

  • 类的声明 先赋予类一个名字
  • 成员属性 一些具体的值
  • 成员方法 就是要干什么事

类的格式

第一种
[修饰符] class 类名 {
[成员属性] 也叫成员变量
[成员方法] 也叫成员函数
}
第二种
[修饰符] class 类名 [extends 父类] [implements 接口1, [接口2 ……]] {
[成员属性] 也叫成员变量
[成员方法] 也叫成员函数
}

成员属性

格式:修饰符 $变量名[=默认值]; 例如:public $name = “张三”;
注意:成员属性不能是带运算符的表达式、变量、方法、函数调用。
错误演示:

  1. <?php
  2. class Person {
  3. public $var3 = 1 + 2; // 带运算符表达式
  4. public $var3 = self::myStaticMethod(); // 静态方法调用
  5. public $var3 = $myVar; // 变量
  6. }

正确演示:

  1. <?php
  2. class Person {
  3. public $var3 = 3; // 普通数值
  4. public $var3 = self::classConstant;
  5. public $var3 = myConstant;
  6. public $var3 = array(true,false);
  7. }

成员方法

格式:[修饰符] function 方法名(参数……) {
[方法体]
[return 返回值]
}

演示:

  1. <?php
  2. class Person {
  3. public function say() {
  4. echo '说话';
  5. }
  6. }

生成对象

定义好类之后,通过new关键字来生成一个对象。
$对象名 = new 类名();
$对象名 = new 类名([参数列表]);

语法

$引用名 = new 类名(构造参数);
$引用名->成员属性 = 赋值; 对象属性赋值也就是成员属性赋值
echo $引用名->成员属性; 输出对象属性
$引用名->成员方法(参数); 调用成员方法

$this

在类里面使用$this 可以调用类本身的方法或者属性;

类的基本使用

index.php

  1. <?php
  2. class Person
  3. {
  4. public $age;
  5. public function say($word)
  6. {
  7. echo "she say {$word}";
  8. }
  9. public function info()
  10. {
  11. $this->say('hi');
  12. return $this->age;
  13. }
  14. }
  15. $hong = new Person();
  16. $hong->age = 22;
  17. $age = $hong->info();
  18. echo "<br>";
  19. echo "she age is {$age}";

通过 class 来抽象一个个类,包含类成员属性和成员方法,在一个成员方法内调用其他成员方法是通过 $this 关键字来调用。 通过 new 关键字实例化一个对象,通过类的语法来修改类的成员属性和调用类的成员方法。