1.面向对象
面向对象的组成
类 : 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。
对象: 是类的实例。
类 就是 对象的抽象化,对象 就是 类的实例化
类的格式
class 类名
{
//修饰符 public、protected、private
修饰符 属性 (我有什么)
方法 (我会什么, 函数 功能)
}
属性格式:
修饰符 属性名
修饰符 属性名 = 值
方法格式:
修饰符 function 方法名( 参数1, 参数2, ...){
方法体
}
对象 (如何使用类)
$对象名 = new 类名
$对象名 = new 类名()
在类外使用属性
$对象名->属性名 (属性名不要加$)
在类外使用方法
$对象名->方法名() (方法名后面的小括号不要丢掉)
如何控制内部与外部之间的联系? 修饰符
类外 本类 继承类
public 公共的 (国名儿子) √ √ √
private 私有的 (私生子) x √ x
protected 受保护的(亲儿子) x √ √
修饰符 优先级
继承重写时, 修饰符要么保持等级, 要么降低等级.
private > protected > public
======================================================
例:
class cc
{
// 属性
public $name = '哈奇士';
public $age = 18;
static $a = 11;
// 方法
public function skill1()
{
echo '沙发'.self::$a;
retrun $this; // 通过伪对象 $this调用本类中的属性和方法
}
public function skill2()
{
echo '衣柜';
}
}
$a = new cc;
// var_dump($a);
echo $a->name.'<br>';
$x = 'name';
echo $a->$x;
echo '<hr>';
$d = $a->skill1();
// var_dump($d);
$a->skill2();
2.对象特点
面向对象主要有三大特性:封装、继承、多态
面向对象特性: 封装性、继承性、多态性。
a). 封装性
高内聚, 低耦合
b). 继承性
class 儿子 extends 老子{}
* 可以继承属性/ 方法
* 可以重写属性/ 方法3
* 支持单继承, 不支持多继承
* 支持连续继承
c). 多态性
PHP不支持重载实现多态,(重载:当子类跟父类有个相同的方法时,子类的方法会覆盖父类的方法。)但是PHP可以变向的实现多态效果。
Ⅰ. 继承
Ⅱ. 重写
Ⅲ.父类引用指向子类对象
多态的优点
1. 消除类型之间的耦合关系
2. 可替换性
3. 可扩充性
4. 接口性
5. 灵活性
6. 简化性
3.其他
1. 常量
格式: const 常量名 = 常量值
使用: 类名::常量名
* 不属于对象, 属于类, 不需要实例化
* 不需要修饰符
* 不能重复
* 可以继承, 可以重写, 继承后, 可以重写一次
* 常量名 区分大小写, 推荐大写
2. 静态
格式:
修饰符 static 属性名/方法名
static 修饰符 属性名/方法名
使用:
类内: self::属性名/方法名()
类外: 类名::属性名/方法名()
* 静态属于类, 不属于对象
* 静态可以定义属性 和 方法
* 在静态方法内, 只能访问静态属性/方法
* 静态属性/方法 可以继承
3. 最终类 final
格式:
final class 类名
final 修饰符 function 方法名
* final可以定义类/ 方法, 不能定义属性
* final类, 不能被继承
* final方法, 不能被重写
* final用户类的结构
4. instanceof
格式: 对象名 instanceof 对象名
格式: 对象名 instanceof 类名
* 判断 对象是否属于对象名
* 判断 对象是否从类名 实例化过来的
网友评论