1、修饰符
和其他面向对象语言一样,PHP的修饰符有三个,分别是public、protected、private。
修饰符的作用只有一个,控制属性、方法(函数)的可见性,具体的可见性如下表。
修饰符 | 类内 | 子类内 | (类及子类)的外部 |
---|---|---|---|
public | 可操作 | 可操作 | 可操作 |
private | 可操作 | 不可操作 | 不可操作 |
protected | 可操作 | 可操作 | 不可操作 |
2、构造方法(函数)和析构方法(函数)
构造方法和析构方法允许在类的初始化时和销毁时执行某些操作,PHP的构造方法允许传递参数,但是析构方法不行。
PHP的构造方法的声明和其他方法一样,只是名称必须规定是_construct(),其中名称前面是2个下划线 ’ ’ ;析构方法也是同理。
2-1、PHP的构造方法
__construct()
2-2、PHP的析构方法
__destruct()
3、属性的相关操作
一般来说,对于类内的属性,不建议在初始化对象后直接获取和设置值,而是通过方法来进行赋值和获取值的操作。
例如:
class car
{
/* 给定一个初始值 */
private $color = 'white';
public function getColor(){
return $this->color;
}
public function setColor($color){
$this->color = $color;
}
}
虽说这样代码变多了点,操作麻烦了点,但是好处是可见的。不仅代码变得规范,而且代码的可读性也高,在对类进行初始化后的操作,也一目了然。
4、继承
面向对象的三大特性分别是:封装、继承、多态。所以,讲到类的时候不得不讲继承。
在PHP中,类的继承通过extends来实现。
例如:
class A
{
public $attr1 = 'attr1';
public function oper1(){
echo 'this is class A';
}
}
class B extends A
{
public $attr2 = 'attr2';
public function oper2(){
echo 'this is class B';
}
}
/* 然后再类外初始化B */
$b = new B();
$b->oper1();
$b->oper2();
在上述的例子中,class B的对象$b能调用class A的方法而不会报错,这就是继承的作用。
但,并不是所有的方法和属性都会被继承,只有修饰符为public和protected的方法和属性才会被继承,如果属性和方法前不带修饰符,默认为public。
4-1、重载
PHP允许对父类的属性和方法进行重载,具体使用为定义与父类相同的属性或方法即可。
注:重载可改变属性/方法的可见性(也就是修饰符)
<?php
header('content-type:text/html;charset=utf-8');
class A
{
protected $attr1 = 'A类的属性1';
}
class B extends A
{
public $attr1 = '继承A类的B类的属性1';
}
$b = new B();
echo $b->attr1;
?>
最后页面显示如下:
4-2、多继承
PHP不支持多继承。