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();
    ?>
    输出结果:

    像个男人一样去战斗!

     
  • 相关阅读:
    图片剪纸刀:批量切割图片工具
    Photosynth软件试用(将照片拼接成实景)
    制作一份简单的网络地图(世博地图的配准和切割)
    Discuz论坛地图插件(通过自定义Discuz Code实现)
    Maven Settings.xml 配置模板
    CentOS 7 firewalld 配置详解 (转)
    Silverlight学习笔记八右键菜单控件
    Silverlight学习笔记十三关于SilverLight的打印
    Silverlight学习笔记十二动态加载图片和显示提示(ToolTip)
    Silverlight学习笔记十一动态创建TabContro的TabItem
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/10958647.html
Copyright © 2011-2022 走看看