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

    私有方法不可调用。

  • 相关阅读:
    Mybatisplus<一> Springboot框架使用MybatisPlus代码自动生成器
    今日收获
    今日收获
    字典特征提取
    sklearn数据集的导入及划分
    文本特征提取
    MySQL基础笔记
    docker笔记
    BOM 中的location对象和history对象
    完善 原生Js 实现的简单无缝滚动轮播图
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/10475739.html
Copyright © 2011-2022 走看看