返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php中重写override的方法
  • 184
分享到

php中重写override的方法

2023-06-06 17:06:30 184人浏览 薄情痞子
摘要

这篇文章主要介绍了PHP中重写override的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 定义:重写(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的方法”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网PHP编程频道,更多相关知识等着你来学习!

--结束END--

本文标题: php中重写override的方法

本文链接: https://lsjlt.com/news/248086.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php中重写override的方法
    这篇文章主要介绍了php中重写override的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 定义:重写(override),即子类中定义了与父类重名的成员,子类可以重...
    99+
    2023-06-06
  • java中重写父类方法加不加@Override详解
    java重写父类方法加不加@Override 这个是我在刚学习java时遇到的问题,希望能给像我一样的新手学习时带来帮助,如有错误请指正,谢谢! class Father{ ...
    99+
    2024-04-02
  • C# 中override重写与new隐藏的区别是什么
    这期内容当中小编将会给大家带来有关C# 中override重写与new隐藏的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#比java多一个new隐藏的功能。C# override重写相当于j...
    99+
    2023-06-17
  • java中重写equals()方法的同时要重写hashcode()方法(详解)
    object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true;注意:当此方法被重写时,通常有必要重写 hashCod...
    99+
    2023-05-31
    java equals hashcode
  • Java中方法重写与重载的区别
    目录一、重写(Override)二、重载(Overload)三、总结Java方法重写(Override)与重载(Overload)的区别(超详细) 首页在我们要学习这个知识点之前,应...
    99+
    2024-04-02
  • Java中方法重写和方法重载的6个区别
    一、定义 方法重载(Overloading):在同一个类中,方法名相同但参数类型、参数个数不同的方法之间的关系。 方法重写(Overriding):在子类中,有相同的方法名、参数类型、参数个数并且返回类型兼容的方法称之为...
    99+
    2023-10-29
    方法 重写 区别
  • Java 中怎么重写方法
    Java 中怎么重写方法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。简单还原一下问题, 我们有一个类SuperClasspublic class Supe...
    99+
    2023-06-17
  • python重写方法和重写特殊构造方法
    目录继承多继承的优缺点子类的方法__init__()重写父类的方法将实例用作属性继承 编写类时,并非总是要从空白开始,如果编写的类是另一个现成类的特殊版本,可使用继承,继承分为单继承...
    99+
    2024-04-02
  • golang重写方法
    随着软件开发技术的发展,不断出现了一些新的编程语言和框架。作为目前最流行的编程语言之一,Golang已经被越来越多的开发者所熟知和使用。在Golang中,有许多方法可以实现同样的功能,但有时候你可能需要重新编写已有的方法,以提高性能或者更好...
    99+
    2023-05-16
  • golang 方法重写
    Golang是一种现代的编程语言,它的设计理念非常简洁、高效。在Golang中,方法重写是一个非常重要的概念,特别是在面向对象编程中。方法重写可以帮助我们避免出现代码重复的问题,提高程序的复用性和可维护性。方法重写是指在子类中对父类中已有的...
    99+
    2023-05-16
  • 重写 Pop() 方法
    php小编香蕉今天为大家介绍如何重写 Pop() 方法。在编程中,Pop() 方法用于删除并返回数组的最后一个元素。然而,有时我们需要对Pop()方法进行自定义,以满足特定需求。通过重...
    99+
    2024-02-10
  • 详解Java中方法重写和方法重载的6个区别
    目录1.方法重写1.1 基本用法1.2 使用场景1.3 注意事项2.方法重载2.1 基本使用2.2 使用场景2.3 注意事项3.方法重写 VS 方法重载总结方法重写(Override...
    99+
    2024-04-02
  • 怎么Java中重写equals方法
    怎么Java中重写equals方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,...
    99+
    2023-05-30
    java equals
  • 如何在 golang 中重写方法?
    go 中的重写方法允许在派生类型中为基类型方法提供新的实现,而无需修改基类型:语法:func (t tiporicevente) nomemetodo(parametri...) tip...
    99+
    2024-04-26
    golang 重写方法
  • 一文解析Java中的方法重写
    目录1.含义2.为什么要使用方法重写3.如何使用方法重写3.1 基本语法3.2 具体分析3.3 方法重写的一些小技巧1.含义 子类继承父类后,可以在子类中书写一个与父类同名同参的方法...
    99+
    2024-04-02
  • 深入浅析Java中的方法重写
    深入浅析Java中的方法重写?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、方法重写(Override)    &nb...
    99+
    2023-05-31
    java 方法重写 ava
  • 重写 django 模型中的删除方法
    问题内容 我有一个页面模型,在保存对象期间调用 save 方法中的打印。但是,当对象被删除时,不会触发任何打印,并且似乎永远不会调用删除方法。那么我应该如何覆盖默认的删除方法呢? cl...
    99+
    2024-02-11
  • Java中抽象类与方法的重写方式
    目录1. 抽象类2. 方法的重写1. 什么情况下需要重写父类中的类型呢?2. @Override 称为注解总结1. 抽象类 关键字:abstract 类:用来描述一类具体的事物 抽象...
    99+
    2023-02-15
    Java抽象类 Java方法重写 抽象类与方法重写
  • Java中为什么重写equals()也需要重写hashCode方法
    Java中为什么重写equals()也需要重写hashCode() 所有类默认继承Object类 先看一下Object源码 package java.lang; public cla...
    99+
    2023-05-17
    Java 重写equals()为什么重写hashCode() Java 重写equals() java重写hashCode 为什么equals要重写hashcode
  • java中方法重写的规则是什么
    在Java中,方法重写是指子类重写父类中的方法。以下是Java中方法重写的规则:1. 方法重写必须具有相同的方法名称、参数列表和返回...
    99+
    2023-08-11
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作