7.3 对象继承

继承指的是一个类(子类)可以拥有另一个类(父类)的属性和方法,两者之间的关系用 extends 关键字来进行关联。

一个子类只能拥有一个父类,不能继承多个父类。

子类可以拥有父类的属性和方法,也可以在子类中使用同名的属性和方法来覆盖(也叫重写、重载)掉。

如果父类定义方法时使用了 final 关键字,则该方法不能被重写。

除构造方法之外,其他方法在进行重写的时候,参数必须保持一致,否则报错。

下面代码中简单的展示了继承相关的内容

// 父类
class Foo{
    // 普通成员
    public $name;
    // 构造函数
    public function __construct($n){
        $this->name = $n;
    }
    // 普通方法
    public function say(string $str){
        echo "<p>{$this->name} : $str</p>";
    }
    public function eat(){
        echo "人是铁,饭是钢,一顿不吃饿得慌!";
    }
    // 这个方法不能被重写
    public final function profile(){
        echo "<p>我叫:{$this->name}</p>";
    }
}

// 子类
class Bar extends Foo{
    // 普通成员
    public $age = 10;
    // 构造函数
    public function __construct($name, $age){
        $this->name = $name;
        $this->age = $age;
    }
    // 重写方法
    public function say(string $str){
        echo "<p>{$this->name}[{$this->age}] : $str</p>";
    }
}

// 实例化
$foobar = new Bar('iGuoji', 26);
// 父类方法
$foobar->profile();
// 重写的方法
$foobar->say('你们好啊!');
// 随便说说
$foobar->eat();

最终输出内容

我叫:iGuoji

iGuoji[26] : 你们好啊!

人是铁,饭是钢,一顿不吃饿得慌!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容