zoukankan      html  css  js  c++  java
  • 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();
    ?>
    输出结果:

    像个男人一样去战斗!

     
  • 相关阅读:
    遇到的一道发散思维题C#
    SQLSERVER函数判断当天是星期几
    C# Web 获取客户端IP
    C# 月度进度条实现
    FileZilla Server的安装和设置
    SQL1428N 应用程序已与 "DB2" 连接,
    DB2客户端连接服务器
    IIS提示Execute Access Denied解决办法
    dom4j java.lang.NoClassDefFoundError: org/jaxen/JaxenException
    Oracle查看用户、用户权限、用户表空间、用户默认表空间
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/10958647.html
Copyright © 2011-2022 走看看