如何在PHP中访问Grand Parent方法

时间:2019-02-10 06:47:18

标签: php inheritance

我用以下三个类实现了多级继承。 如果我想访问r类中p类的show()方法,那么我们该怎么做。 我曾尝试使用parent :: parent :: show(),但PHP中没有此类功能。

那么,谁能建议我们该怎么做?

class p{
    public function show() {
        echo __method__;
    }
}

class q extends p {
    public function show() {
        echo __method__;
    }
}

class r extends q {
    public function show() {
        echo __method__;
    }
}

4 个答案:

答案 0 :(得分:0)

使用parent::method_name()调用父方法

class p{
    public function show() {
        echo "I am from p class";
    }
}

class q extends p {
    public function show() {
        parent::show();
    }
}

class r extends q {
    public function show() {
        parent::show();
    }
}

请参见下面的屏幕截图:

enter image description here

答案 1 :(得分:0)

扩展类时,子类将从父类继承所有公共和受保护的方法。除非一个类重写了这些方法,否则它们将保留其原始功能。 使用不同的方法名称,例如

class p{

    public function show() {
        echo __method__;
    }

    public function p_show() {
        echo __method__;
    }
}

class q extends p {

     public function show() {
       echo __method__;
     }

    public function q_show() {
       echo __method__;
     }
}

class r extends q {

  public function show() {
    echo __method__;
  }

}

$testObject = new r();
$testObject->p_show();
$testObject->q_show();
$testObject->show();

输出:

p::p_show
q::q_show
r::show

答案 2 :(得分:0)

每个父对象可能都有自己的函数实现,因此您可以创建另一个函数来指示父对象或父对象的父对象:

class p
{
    public function show()
    {
        return 'hello grandson';
    }
}

class q extends p
{
    public function show()
    {
        return 'hello child';
    }

    public function showFather()
    {
        return Parent::show();
    }
}

class r extends q
{
    public function show()
    {
        return 'Hello';
    }

    public function showFather()
    {
        return Parent::show();
    }

    public function showGrandFather()
    {
        return Parent::showFather();
    }
}

$instance = new r();

答案 3 :(得分:0)

您可以在类r中创建类p的对象,然后可以访问show方法。像这样:

class p{
    public function show() {
        echo __method__;
    }
}

class q extends p {
    public function show() {
        echo __method__;
    }
}

class r extends q {
    public function show() {
        echo __method__;
    }

    public function showP() {
        $p = new p();
        $p->show();

    }

}

$r = new r();
echo $r->showP();

希望它对您有帮助。