php 继承

直接看代码和注释吧

// 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();



12-30 401
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值