• php类知识点滴---类继承的一些原则


    • 完全重写

    <?php

    class coach

    {

       public function __construct()

       {

         echo "欢迎来到~北武堂训练~";

       }

    }

    class cj extends coach

    {

       public function __construct($name)

       {

         echo "哎哟~好久不见了".$name;

       }

    }

    $cj = new cj('丁大锅');

    ?>

    实例化之后输出结果:

    哎哟~好久不见了丁大锅

    • 在原有基础上增强功能(关键表达式:重写功能中 先实现parent::方法名)
    <?php
    class coach
    {
        public function __construct()
        {
            echo "欢迎来到~北武堂训练~";
        }
    }
    class cj extends coach
    {
       public function __construct()
       {
           parent::__construct();
           echo "今天练点什么?力量训练还是站立式格斗还是地面技术";
       }
    }
    $cj = new cj();
    ?>
    
    输出结果:
    
    欢迎来到~北武堂训练~今天练点什么?力量训练还是站立式格斗还是地面技术
    • final关键字
    final修饰类,意味着该类不能被继承
    #错误示例
    final class coach
    {
    public function __construct()
    {
    echo "欢迎来到~北武堂训练~";
    }
    }
    class cj extends coach
    {
    public function __construct()
    {
    parent::__construct();
    echo "今天练点什么?力量训练还是站立式格斗还是地面技术";
    }
    }
    $cj = new cj();
    ?>
    输出结果:
    Fatal error: Class cj may not inherit from final class (coach)......

    final修饰方法,意味着该方法不能被重写
    #错误示例
    class coach
    {
    final function __construct()
    {
    echo "欢迎来到~必图拳馆训练~";
    }
    }
    class xxd extends coach
    {
    public function __construct()
    {
    echo "像个男人一样去战斗!";
    }
    }
    $cj = new xxd();
    ?>
    
    
    输出结果:
    Fatal error: Cannot override final method coach::__construct() in
    • 重写要点
    重写的时候权限只能放大,不能缩小
    例如父类中的方法修饰符号是public那么子类中的也是public 而不能改成protected 或private等更小的权限
    #错误示例
    <?php
    class coach
    {
    public function __construct()
    {
    echo "欢迎来到~必图拳馆训练~";
    }
    }
    class xxd extends coach
    {
    protected function __construct()
    {
    echo "像个男人一样去战斗!";
    }
    }
    $cj = new xxd();
    ?>
    输出结果:
    Fatal error: Uncaught Error: Call to protected xxd::__construct() from invalid context in

    #正确示例:
    <?php
    class coach
    {
    public function __construct()
    {
    echo "欢迎来到~必图拳馆训练~";
    }
    }
    class xxd extends coach
    {
    public function __construct()
    {
    echo "像个男人一样去战斗!";
    }
    }
    $cj = new xxd();
    ?>
    输出结果:

    像个男人一样去战斗!

     
  • 相关阅读:
    服务器重启
    aliyun修复漏洞之后,重启php-fpm命令
    数据结构和算法绪论(一)
    微信小程序+微信公众号开发总结
    数字校园项目-学生失联预警系统(三)----数据库设计
    数字校园项目-学生失联预警系统(二)-----项目部署
    数字校园项目-学生失联预警系统(一)
    gdut极路由破解教程
    项目:JavaWeb聊天室(问题汇总)
    项目:点餐系统(问题汇总)
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/10958647.html
Copyright © 2020-2023  润新知