我的编程空间,编程开发者的网络收藏夹
学习永远不晚

php中重写override的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

php中重写override的方法

这篇文章主要介绍了php中重写override的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

定义:重写(override),即子类中定义了与父类重名的成员,子类可以重写父类任意类成员,通常重写是用来重写父类的方法,用于扩展或者更改某些业务逻辑。

1.不管是公有和是受保护属性,一旦重写父类的就会不存在,而私有属性不会被覆盖而丢失。

<?php    class A{              public $name='张三';        protected $sex='man';        private  $age='25';        public function getName(){           echo __CLASS__,'<br/>';           echo $this->name."<br>";        }        protected function getSex(){            echo __CLASS__,'<br/>';            echo $this->sex."<br>";        }        private function getAge(){            echo __CLASS__,'<br/>';            echo $this->age."<br>";        }    }    class B extends A{                public $name='王五';        protected $sex='woman';        private  $age='26';                    public function getAll(){            echo $this->name."<br>";            echo $this->sex."<br>";            echo $this->age."<br>";        }    }    $a=new B();    var_dump($a);              echo "<br>";    $a->getAll();//王五 woman 26?>

可以发现无论是公有属性,还是受保护属性都被覆盖,而私有属性因为没有被继承,所以不受影响。

<?php    class A{              public $name='张三';        protected $sex='man';        private  $age='25';        public function getName(){                      echo $this->name."我是父类的getName"."<br>";        }        protected function getSex(){                        echo $this->sex."我是父类的getSex"."<br>";        }        private function getAge(){                        echo $this->age."我是父类的getAge"."<br>";        }    }    class B extends A{                public $name='王五';        protected $sex='woman';        private  $age='26';        public function getName(){                      echo $this->name."我是子类的getName"."<br>";        }        protected function getSex(){                      echo $this->sex."我是子类的getSex"."<br>";        }        private function getAge(){                      echo $this->age."我是子类的getAge"."<br>";        }        public function getAll(){            $this->getName();            $this->getSex();            $this->getAge();        }    }    $a=new B();    $a->getAll();//王五我是子类的getName woman我是子类的getSex 26我是子类的getAge    echo "<br>";?>

小结:公有、受保护的属性重写是直接覆盖父类成员,私有属性不会被覆盖;公有、收保护的方法会被重写,但是私有方法不会被重写(私有方法本质没有被继承)。

2.子类重写父类方法的要求。

   a. 子类重写父类的方法,控制权不能高于父类,即子类可以比父类更开放。

<?phpclass Fu{    protected function show(){        echo __CLASS__,'<br/>';    }}class Zi extends Fu{    protected function show(){}//正确    public function show(){}//允许    private function show(){}//错误:控制权比父类更严格}?>

   b. PHP中重写要求子类重写父类方法的时候,必须保证与父类同名方法参数一致。

<?phpclass Fu{    protected function show(){        echo __CLASS__,'<br/>';    }}class Zi extends Fu{    public function show(){}    public function show($a){}//错误,与父类同名方法不一致}?>

c. 重写针对的是被继承的成员,父类私有方法不会被继承,因此不受要求b规定。

<?phpclass Fu{    private function show(){        echo __CLASS__,'<br/>';    }}class Zi extends Fu{    private function show($name){//不会报错,因为本质不存在重写(父类Fu::show没有被继承)        echo $name,'<br/>';    }}?>

   d.重写是指子类拥有特殊的情况,一般是需要在父类的基础上进行扩展,此时如果想要继续保证父类被重写的方法继续执行(默认永远只访问子类重写的新方法),需要在子类重写方法的时候使用parent关键字。

<?phpclass Fu{    protected function show(){        echo __CLASS__,'<br/>';    }}class Zi extends Fu{    public function show(){        parent::show();                //扩展业务逻辑        echo __CLASS__,'<br/>';    }}?>

小结:parent不能访问父类的属性,可以访问静态属性静态方法类常量普通方法

感谢你能够认真阅读完这篇文章,希望小编分享的“php中重写override的方法”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

php中重写override的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

php中重写override的方法

这篇文章主要介绍了php中重写override的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 定义:重写(override),即子类中定义了与父类重名的成员,子类可以重
2023-06-06

C# 中override重写与new隐藏的区别是什么

这期内容当中小编将会给大家带来有关C# 中override重写与new隐藏的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#比java多一个new隐藏的功能。C# override重写相当于j
2023-06-17

java中重写equals()方法的同时要重写hashcode()方法(详解)

object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true;注意:当此方法被重写时,通常有必要重写 hashCod
2023-05-31

PHP中的URL重写是如何实现的?(请描述PHP中URL重写的原理和实现方法。)

URL重写是一种服务器端技术,可将一个URL映射到另一个URL或资源。在PHP中,URL重写可通过.htaccess文件或mod_rewrite模块实现。.htaccess文件方法:RewriteEngineOnRewriteRule^old-url$new-url[flags]mod_rewrite模块方法:RewriteRulePatternSubstitutionFlags其中:Pattern:要匹配的URL模式Substitution:匹配URL应重写到的目标URLFlags:可选标志,指定重写行
PHP中的URL重写是如何实现的?(请描述PHP中URL重写的原理和实现方法。)
2024-04-02

Java中方法重写和方法重载的6个区别

方法重载和方法重写区别:1、定义;2、应用场景;3、方法签名;4、继承与多态;5、异常处理;6、方法访问修饰符;方法重载在同一个类中,方法名相同但参数类型、参数个数不同的方法之间的关系。在子类中,有相同的方法名、参数类型、参数个数并且返回类型兼容的方法称之为方法重写。
Java中方法重写和方法重载的6个区别
2023-10-29

Java 中怎么重写方法

Java 中怎么重写方法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。简单还原一下问题, 我们有一个类SuperClasspublic class SuperClass {
2023-06-17

重写 Pop() 方法

php小编香蕉今天为大家介绍如何重写 Pop() 方法。在编程中,Pop() 方法用于删除并返回数组的最后一个元素。然而,有时我们需要对Pop()方法进行自定义,以满足特定需求。通过重写Pop()方法,我们可以添加额外的逻辑或修改返回的元素
重写 Pop() 方法
2024-02-10

怎么Java中重写equals方法

怎么Java中重写equals方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,
2023-05-30

如何在 golang 中重写方法?

go 中的重写方法允许在派生类型中为基类型方法提供新的实现,而无需修改基类型:语法:func (t tiporicevente) nomemetodo(parametri...) tipodiretornotiporicevente 必须与
如何在 golang 中重写方法?
2024-04-26

深入浅析Java中的方法重写

深入浅析Java中的方法重写?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、方法重写(Override) 在Java中如何来定义重写:Java程
2023-05-31

重写 django 模型中的删除方法

问题内容我有一个页面模型,在保存对象期间调用 save 方法中的打印。但是,当对象被删除时,不会触发任何打印,并且似乎永远不会调用删除方法。那么我应该如何覆盖默认的删除方法呢?class Page(models.Model):image
重写 django 模型中的删除方法
2024-02-11

Java中抽象类与方法的重写方式

这篇文章主要介绍了Java中抽象类与方法的重写方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-15

Java中为什么重写equals()也需要重写hashCode方法

这篇文章主要介绍了Java中为什么重写equals()也需要重写hashCode(),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录