我用以下三个类实现了多级继承。 如果我想访问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__;
}
}
答案 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();
}
}
请参见下面的屏幕截图:
答案 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();
希望它对您有帮助。