首页 > Web开发 > 详细

php 中 public private protected的区别

时间:2019-03-05 12:22:36      阅读:180      评论:0      收藏:0      [点我收藏+]

public 子类,外部都可调用。
protected 子类可以调用,外部不可以调用。
private 子类不可以调用,外部不可以调用。

<?php
class AA {
    public function a() {
        echo 'aaa';
    }

    protected function b() {
        echo 'bbb';
    }

    private function c() {
        echo 'ccc';
    }
}


$objAA = new AA();
$objAA->a();
$objAA->b(); // 报错
$objAA->c(); // 报错
<?php
class AA {
    public function a() {
        echo 'aa1';
    }

    protected function b() {
        echo 'bb1';
    }

    private function c() {
        echo 'cc1';
    }
}


class BB extends AA{
    public function a() {
        echo 'aa2';
    }

    public function b() {
        echo 'bb2';
    }

    public function c() {
        echo 'cc2';
    }
}

$objBB = new BB();
$objBB->a(); // 正常
$objBB->b(); // 正常
$objBB->c(); // 正常

public 可以重写所有的父类方法。

<?php
class AA {
    public function a() {
        echo 'aa1';
    }

    protected function b() {
        echo 'bb1';
    }

    private function c() {
        echo 'cc1';
    }
}


class BB extends AA{
    protected function a() { // 报错
        echo 'aa2';
    }

    protected function b() {
        echo 'bb2';
    }

    protected function c() {
        echo 'cc2';
    }
}

$objBB = new BB();
$objBB->a(); // 报错
$objBB->b(); // 报错
$objBB->c(); // 报错
<?php
class AA {
    public function a() { 
        echo 'aa1';
    }

    protected function b() {
        echo 'bb1';
    }

    private function c() {
        echo 'cc1';
    }
}


class BB extends AA{
    private function a() { // 报错
        echo 'aa2';
    }

    private function b() { // 报错
        echo 'bb2';
    }

    private function c() {
        echo 'cc2';
    }
}

$objBB = new BB();
$objBB->a(); // 报错
$objBB->b(); // 报错
$objBB->c(); // 报错

子类覆盖父类方法,不可以缩小父类的设置。

<?php
class AA {
    public function a() {
        echo 'aa1';
    }

    protected function b() {
        echo 'bb1';
    }

    private function c() {
        echo 'cc1';
    }
}


class BB extends AA{
    public function d() {
        $this->a();
    }

    public function e() {
        $this->b();
    }

    public function f() {
        $this->c(); // 报错
    }
}

$objBB = new BB();
$objBB->d();
$objBB->e();
$objBB->f();

私有方法不可调用。

php 中 public private protected的区别

原文:https://www.cnblogs.com/jiqing9006/p/10475739.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!