• php继承(extends)


    类的继承要通过extends来实现

    class 子类名 extends 父类名 {…………}
    
    • 1


    子类访问父类中public成员方法

    • 子类可以继承父类的构造函数,当子类被实例化时,php会先在子类中查找构造函数。
    • 若子类有自己的构造函数,php会先调用子类中的构造函数。
    • 当子类没有自己的构造函数时,php则会去调用父类中的构造函数。
    <?php
        class Website{
            public $name, $url, $title;
            public function __construct(){
                echo '--基类中的构造函数--';
            }
            public function demo(){
                echo '--基类中的成员方法';
            }
        }
    
        class ClassOne extends Website{
    
        }
    
        class ClassTwo extends Website{
            public function __construct(){
                echo '--子类中的构造函数--';
            }
        }
    
        $object = new ClassOne();
        $object->demo();
         /*结果为:--基类中的构造函数--
        --基类中的成员方法*/
    
        $object2 = new ClassTwo();
        $object2->demo();
        /*结果为:--子类中的构造函数--
        --基类中的成员方法*/
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31


    子类访问父类中protected成员方法

    • 有些类继承的属性,并不想在类外都被访问,这个成员被声明为保护成员,用protected修饰。
    • 受保护成员不可在类外部被访问到,但可以在子类的内部访问。
    • 也就是说我们可以在子类中设置一个函数,来访问父类中这个受保护的成员。
    <?php
        class Website{
            public $name, $url, $title;
            public function __construct(){
                echo '--基类中的构造函数--';
            }
            protected function demo(){
                echo '--基类中的成员方法';
            }
        }
    
        class ClassOne extends Website{
    
        }
    
        class ClassTwo extends Website{
            public function __construct(){
                echo '--子类中的构造函数--';
            }
    
            public function test(){
                $this->demo();
            }
        }
    
        $object = new ClassOne();    /*结果为:--基类中的构造函数--*/  
        //$object->demo();  //在子类中调用父类使用protected修饰的成员方法会报错
    
        $object2 = new ClassTwo();
        $object2->test();
    
        /*结果为:--子类中的构造函数--
        --基类中的成员方法- */
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34


    子类访问父类中private成员方法

    • private修饰私有成员
    • 父类中的私有成员不会被子类继承。
    • 因此不可被子类放问到。
    <?php
        class Website{
            public $name, $url, $title;
            public function __construct(){
                echo '--基类中的构造函数--';
            }
            private function demo(){
                echo '--基类中的成员方法';
            }
        }
    
        class ClassTwo extends Website{
            public function test(){
                $this->demo();
            }
        }
    
        
        $object2 = new ClassTwo();
        $object2->test();
        
        /*结果为: --基类中的构造函数--
         PHP Fatal error:  Uncaught Error: Call to private method Website::demo() from context 'ClassTwo' in 5_php_extends_private.php:14*/
         /*出错原因: 子类中调用父类中使用private关键字修饰的成员,程序会报错并终止。*/
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
  • 相关阅读:
    讯飞星火V4.0 发布,全面对标GPT-4 Turbo
    【Unity】简单的深度虚化shader
    面试必问-Android系统运行流程与AMS源码实战
    Springboot考研教室在线预约系统0q143计算机毕业设计-课程设计-期末作业-毕设程序代做
    面试官:Redis如何实现持久化的、主从哨兵又是什么?
    C#/.NET/.NET Core优秀项目和框架8月简报
    2022-09-02T16:00:00.000Z 转2022-09-02
    TopSAP天融信 LINUX客户端 CentOS版安装
    Taurus .Net Core 微服务开源框架:Admin 插件【2】 - 系统环境信息管理 - 【OS、Assembly】
    如何完成企业数据可视化?要从五个方面展开
  • 原文地址:https://blog.csdn.net/weixin_42167759/article/details/125457181