php 继承

来源:互联网 发布:粒子群算法 编辑:程序博客网 时间:2024/06/18 13:37

直接看代码和注释吧

// private只能在类中访问// protected只能在类中和子类中访问// public 可以在任何地方访问

class Father{    public $name = '郭靖'; // 名字    private $wife = '黄蓉'; // 老婆    protected $money = 5000; // 财产    // 做饭任何人都可以教    public function cook()    {        echo '做饭';    }    // 功夫只传儿子    protected function gongfu()    {        echo '降龙十八掌';    }    // 偷东西这事不能传儿子    private function steel()    {        echo '不要脸的偷东西';    }}class Son extends Father{    public function callGongfu()    {        $this->gongfu();  // 在内部使用父类继承过来的方法    }    public function callSteel()    {        // $this->steel();  // 不能继承父类私有方法    }    public function callFatherProperty()    {        echo $this->name;        echo $this->money;//        echo $this->wife; // 不能继承    }}$son = new Son();$son->cook();//$son->gongfu(); //继承成功,调用失败,protected只用在类内部使用//$son->steel(); // 继承失败,调用失败,private 不能被继承$son->callGongfu(); // 调用成功 说明protected可以在类内部使用$son->callFatherProperty();//var_dump($son);

final 修饰的类不能被继承

单独设置一个抽象类是没有意义的,只有有了抽象方法,抽象类才有了血肉。下面介绍抽象方法。

abstract 抽象方法

用abstract修饰的类表示这个方法是一个抽象方法。

抽象方法,只有方法的声明部分,没有方法体。

抽象方法没有 {} ,而采用 ; 结束。

一个类中,只要有一个抽象方法,这个类必须被声明为抽象类。

抽象方法在子类中必须被重写


abstract class User {    abstract public function eat();    public function play() {        echo 'user play'.'<br>';    }}//new User() // 不能实例化class NormalUser extends User {    public function eat() {        echo 'normal user eat'.'<br>';    }}$normalUser = new NormalUser(); // 可以实例化$normalUser->play();$normalUser->eat();



0 0