PHP类的继承和接口

PHP类的继承的一些语法

-PHP的类只支持单继承,就是每个类最多只能有一个父类或者没有父类。
-子类不能继承父类使用private修饰的成员。
修饰符可访问范围
public当前类、子类和类外
protected当前类和子类
private当前类
类的类型含义
被final修饰的类只能实例化不能被继承
被abstract修饰的类只能被继承不能被实例化

注意:
被final修饰的方法不能被子类重写。

-通常要被子类继承的成员都使用protected,其余的尽量使用private,把类的内部实现隐藏起来。
-子类可以重写父类的成员,但不可以重写父类private修饰的成员。
-可以使用parent访问父类的成员。
修饰符含义
self当前类本身
parent当前类父类
$this当前对象
-构造函数和析构函数的执行顺序
- 一个没有父类的类先执行构造函数再执行析构函数
- 一个有父类的类先执行子类的构造函数再执行父类的构造函数,析构函数的执行顺序跟构造函数的执行顺序相反。
<?php
// 定义一个Person类
class Person {
    // 构造函数
    public function __construct() {
        echo "Person's __construct.",'<br />';
    }
    // 析构函数
    public function __destruct() {
        echo "Person's __destruct.",'<br />';
    }
}
// 定义一个PersonMale类继承Person类
class PersonMale extends Person {
    // 构造函数
    public function __construct() {
        echo "PersonMale's __construct.",'<br />';
        // 调用父类的构造函数
        parent::__construct();
    }
    // 析构函数
    public function __destruct() {
        parent::__destruct();
        echo "PersonMale's __destruct.",'<br />';
    }
}
// 定义一个PersonFemale类继承Person类
class PersonFemale extends Person{
    // 构造函数
    public function __construct() {
        echo "PersonFemale's __construct.",'<br />';
        parent::__construct();
    }
    // 析构函数
    public function __destruct() {
        parent::__destruct();
        echo "PersonFemale's __destruct.",'<br />';
    }
}

$personObject = new Person();
$personMaleObject = new PersonMale();
$PersonFemaleObject = new PersonFemale();

运行结果:
Person's __construct.
PersonMale's __construct.
Person's __construct.
PersonFemale's __construct.
Person's __construct.
Person's __destruct.
PersonFemale's __destruct.
Person's __destruct.
PersonMale's __destruct.
Person's __destruct.

PHP的接口

-一个类可以实现多个接口
-接口里的方法都是不完整的方法(没有函数体的)
-接口的使用
<?php
/**
*   接口MyInterFaceA
*/
interface MyInterFaceA {
    public function functionA();
    public function functionB();
}
/**
*   接口MyInterFaceB
*/
interface MyInterFaceB {
    public function functionC();
    public function functionD();
}
/**
*   类实现接口MyInterFaceA和MyInterFaceB
*   并且重写接口里所有的公共的抽象方法
*/
class MyClass implements MyInterFaceA,MyInterFaceB{
    public function functionA() {

    }
    public function functionB() {

    }
    public function functionC() {

    }
    public function functionD() {

    }
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值