欢迎光临
感谢一路有你

OOP面向对象基础-继承

如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
 

继承

  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) 打赏
未经允许不得转载:王明昌博客 » OOP面向对象基础-继承
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏