限时免费试用:欢迎注册 api.bigmodel.org ,快速体验大模型 API 接入服务。
当前位置:首页 >开发者 >PHP笔记 >PHP高级

OOP面向对象基础-继承

分类:PHP高级时间:2018-01-02浏览:3575

继承

  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
Share your thoughts respectfully.