zoukankan      html  css  js  c++  java
  • php 中 public private protected的区别

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

    私有方法不可调用。

  • 相关阅读:
    C#利用HttpWebRequest进行post请求的示例(HTTPS)
    jQuery对象与DOM对象之间的转换方法
    解决SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法
    Win10启动盘制作工具
    Silverlight5_Tools安装报错解决方案
    js 数组操作
    mac使用入门
    sql linq lamda
    SqlServer将数据库中的表复制到另一个数据库
    LoadRunner11学习记录五 -- 错误提示分析
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/10475739.html
Copyright © 2011-2022 走看看