限时免费试用:欢迎注册 api.bigmodel.org ,快速体验大模型 API 接入服务。

PHP高级

OOP面向对象基础-继承

继承 1个子类只能继承一个父类,1个父类让多个子类继承 如果子类继承了父类,子类就具有了父类的属性与方法 如果子类的属性或方法名与父类相同时,如果子类的开放性大于(等于)父类的,覆盖或重写 ,反之报错 继承的作用 提高重用性 方便扩展 方便升级 继承的特性 继承的特性一 单继承 1个父类可有多个子类 1个子类只能有1个父类 继承的特性二 如果子类中的方法或属

作者
王明昌
发布时间
最后更新

继承

  1. 1个子类只能继承一个父类,1个父类让多个子类继承
  2. 如果子类继承了父类,子类就具有了父类的属性与方法
  3. 如果子类的属性或方法名与父类相同时,如果子类的开放性大于(等于)父类的,覆盖或重写 ,反之报错

继承的作用

  1. 提高重用性
  2. 方便扩展
  3. 方便升级

继承的特性

继承的特性一

单继承 1个父类可有多个子类 1个子类只能有1个父类

继承的特性二

如果子类中的方法或属性和父类的名称相同,属性会覆盖或方法的重写,且只对子类有效

重写

子类可以重写父类的属性和方法,也可以修改访问控制符,但是只能重等级高的改成等级低的,不能有低到高,建议一般不要修改访问控制符
class Person
{
    public $name='zz';
    private $age=18;
    public function say(){
        echo $this->name;
    }
}
class A extends Person
{
//    private $name='xx';//直接爆红
    public $age='19';
    public function say(){
        echo "age:".$this->age;
    }
}

$a = new A;
echo $a->say();

操作符::

只能在类内部使用 作用:在没有声明任何实例的情况下访问类中的成员方法与属性 parent:调用父类的成员变量/方法/常量,父类私有的方法不能被继承 self:当前类的静态成员于常量 类名:调用本类变量/常量/方法
class Person
{
    private $name='cc';
    public $age;
    public function say(){
        echo $this->name;
    }
    public function __construct(){
        echo "this is a ".$this->name;
    }
}

class A extends Person
{
    const BIRTH = '1125';
    private $sex = '女';
    public function __construct(){
        parent::__construct();//调用父类的构造方法
        echo self::BIRTH;//1125
    }
}

$a = new A;
$a->say();

链式操作

class Num
{
    public $a = 10;
    public function plus($num){
        $this->a =$this->a+$num;
        return $this->a;
    }
    public function plus1($num){
        $this->a =$this->a+$num;
        return $this;
    }
}

$a  = new Num();
var_dump($a->plus(12));///返回int(22)
var_dump($a->plus1(12));//object(Num)#1 (1) { ["a"]=> int(34) }

var_dump($a->plus1(10)->plus1(10)->plus(10));// 最后输出就好 int(64)

访问级别

访问级别 public private protected 内部 Y Y Y 外部 Y N N 子类 Y N Y
0/500
友善分享您的看法。
反馈邮箱