美文网首页
PHP 方法重载的注意事项

PHP 方法重载的注意事项

作者: zshanjun | 来源:发表于2017-03-24 17:30 被阅读36次

先给出个简答的例子:

<?php

class ParentClass
{
    public function one()
    {
        echo 'parent here<br />';
    }

    public function alone()
    {
        echo 'alone<br />';
        $this->one();
    }
}

class ChildClass extends ParentClass
{
    public function one()
    {
        echo 'child here<br />';
    }

    public function test()
    {
        $this->alone();
    }
}

$child = new ChildClass();
$child->test();

//输出
alone
child here

注意在子类中实例中调用父类的方法,如果父类方法中包含子类重载后的方法时,会优先调用子类方法。如果子类中没有此方法时,才会调用父类的方法。

<?php

class ParentClass
{
    public function one()
    {
        echo 'parent here<br />';
    }

    public function alone()
    {
        echo 'alone<br />';
        $this->one();
    }
}

class ChildClass extends ParentClass
{
    // public function one()
    // {
    //     echo 'child here<br />';
    // }

    public function test()
    {
        $this->alone();
    }
}

$child = new ChildClass();
$child->test();

//输出
alone
parent here

这样的行为,在python中也同样成立:

class ParentClass:
    def one(self):
        print "parent here"
        
    def alone(self):
        print "alone"
        self.one()
        

class ChildClass(ParentClass):
    def one(self):
        print "child here"
        
    def test(self):
        self.alone()
        
c = ChildClass()
c.test()

//输出
alone
child here

还有一个特性值得注意的是:在C和C++里,父类都不允许调用子类的方法,但在php里可以。
下面是一个调用的例子:

<?php
class Animal
{
    protected $name;
    public function run()
    {
        echo 'Aniaml run';
        $this->swim();
        echo $this->fishNum;

    }
}

class Fish extends Animal
{
   public $fishNum=10;
    public function swim()
    {
        echo 'Fish swim';
    }
}
$fish=new Fish();
$fish->swim();
$fish->run();

//输出
Fish swimAniaml runFish swim10


参考网站:

相关文章

  • PHP编程开发技巧:PHP中重载如何实现

    PHP编程开发技巧:PHP中重载如何实现,重载分为属性重载和方法重载,在PHP中的重载和在其它编程语言的重载不一样...

  • PHP 方法重载的注意事项

    先给出个简答的例子: 注意在子类中实例中调用父类的方法,如果父类方法中包含子类重载后的方法时,会优先调用子类方法。...

  • NO.15 构造方法的重载

    构造方法的重载 重载:方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表 构造方法注意事项...

  • PHP重载

    PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。 属性的重载通过__set,__get,__is...

  • php 属性重载与方法重载

    本文实例讲述了PHP面向对象程序设计重载(overloading)操作。分享给大家供大家参考,具体如下: 重载 P...

  • PHP"重载"

    1、什么是重载 1)PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法,我们是通过魔术...

  • PHP 重载方法 __call()

    __call() 方法用于监视错误的方法调用。 __call()(Method overloading) 为了避免...

  • java之「方法重载」

    方法重载 相对于我日常经常使用的php来说,java有个很不同的地方,这里可以说下。就是方法重载。白话就是,在一个...

  • 7.11 重载

    PHP中的重载是指 动态的创建属性或方法,传统的重载是指定义多个参数不同的同名方法。 当实例调用对象中不存在的属性...

  • 第十四章:重载

    PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法。我们是通过魔术方法(magic m...

网友评论

      本文标题:PHP 方法重载的注意事项

      本文链接:https://www.haomeiwen.com/subject/igmfottx.html