概念:
将要完成的工作拆分为 "一个一个对象" 的任务(功能), 每个对象独自完成自己的任务, 任务之间的链接通过 "调用" 来实现, 最终完成整体的工作.
面向对象三大特性:
封装 继承 多态
基本形态:
1, 定义类;
2, 创建类的对象;
3, 使用对象;
对象创建的基本形式:$ 对象名 = new 类名();
类中的成员:
一个类的内部可以有 3 种代码:
属性
方法
类常量
属性:
属性分为一般属性和静态属性.
一般属性: 就是放在一个类中的变量.
定义形式: public $v1;(定义不赋值)或 public $v2 = 2;(定义并赋值).
错误形式:
- $v1 = 1;(必须加修饰符)
- public $v2 = 1+3;(右边不能是计算表达式)
- public $v3 = $v2; (右边不能是变量)
静态属性: 定义属性的时候, 前面加上关键字: static, 此时就是静态属性.
静态属性的意义:
对比来说: 一般属性, 他的值是隶属于该类的具体某个对象(虽然定义在类中), 或者说, 每个对象的同样的属性的值, 有可能不一样.
静态属性就是: 只隶属于类本身 -- 也可以看做是所有对象的 "共有数据".
定义形式: static $v1=10;
使用: 类::$ 静态属性名;
方法:
一般方法: 跟面向过程中定义方法一样.
关键字:$this: 是一个 "伪对象", 代表当前所属类的当前对象.
静态方法: 如果在一个方法的前面加上 static 关键字修饰, 则就变成了静态方法.
定义: 类名:: 静态方法名();
使用: S1::show();
注意: 1,$this 在静态方法中不能使用. 2, 静态方法中不应调用非静态方法.
关键字: self: 含义: 代表当前类. 使用: 通常只能在某个类的某个方法内部代表该类的名称.
构造方法: 构造方式是类中的一个 "特殊" 方法, 其作用是在实例化一个对象的同时, 给该对象的属性赋值, 使之一创建完成, 就具有了其本身的特有数据(属性值).
构造方的特点:
1, 构造方法的方法名是固定的:__construct();
2, 构造方法必须是普通方法(不能是静态方法);
3, 通常该方法应该是 public;
4, 通常该方法中使用 $this 这个关键字来对属性进行赋值;
5, 当 new 类名 () 的时候, 其实是在调用该构造方法;
6, 如果一个类中定义了构造方法, 则实例化该类时就会调用该方法, 且实例化时的参数需要跟构造方法的参数匹配;
类的继承:
简单理解:
某个类 A 具有某些特征, 另一个类 B, 也具有 A 类的所有特征, 并且还可能具有自己的更多的一些特征, 此时, 我们就可以实现: B 类使用 A 的特征信息并继续添加自己的一些特有特征信息.
几个概念: 父类 / 子类: 已有类为父类, 新建类为子类. 单继承: 一个类只能从一个上级类继承其特性信息.
修饰符:
在类中的成员, 通常都可以在前面加上以下 3 个修饰符:
public: 公共的, 共有的, 公开的. 用该修饰符修饰的成员, 可以在 "任何位置" 使用(访问).
protected: 受保护的. 可以在当前类或当前类的上下级具有继承关系的类中访问.
private: 私有的. 只能在其所在的类中访问.
parent: 代表父类
self: 代表 "本类"(自己当前类)
构造方法析构方法在继承中的表现:
子类中没有定义构造方法时, 会自动调用父类的构造方法. 因此实例化子类时, 需按照父类的构造方法的形式进行.
子类定义了自己的构造方法, 则不会自动调用父类的构造方法, 但可以手动调用: parent::__construct();.
通常, 在子类, 很多时候, 在构造方法中, 都应该 (需要) 去调用父类的构造方法以节省代码, 增加可读性.
重写:
重写又叫覆盖, 就是将从父类继承下来的属性或方法重新 "定义"-- 就是从新写.
重写的基本要求:
访问控制权限:
下级的访问控制权限应该不低于上级的访问控制权限:
上级: public 下级: 只能 public
上级: protected 下级: protected, public
上级: private 下级: private protected public-- 实际此情况无意义.
私有的不能覆盖, 而是完全当作自己全新的.
方法的参数形式应该跟父类的一致.
构造方法的重写问题: 构造方法不但可以像其他普通方法一样重写, 而且, 比普通方法更宽松: 重写的时候参数可以不一致.
最终类 final class:
如果某个类不希望对其进行扩展, 则可以将其声明为 "最终类".
形式: final class 类名{ .... 类定义....};
同样, 可以有最终方法: final function 方法名(){.... 方法定义....};
来源: http://www.bubuko.com/infodetail-2956187.html