抽象类和继承类中的受保护函数


protected function within abstract and inheritted class

我有一个抽象类,它扩展了另一个类,函数被定义为受保护的,这个函数再次继承自另一个类,现在我正在尝试调用该函数。它给了我错误。我不知道我怎么了。我的代码如下所示:

abstract class abc {
abstract protected function f1($name, $address);
}
class xyz extends abc {
protected function f1($name, $address) {
    return "$name , $address";
}
}
class jkl extends xyz {
   echo $this->f1('Ravi','Delhi');
}

为了使你的代码正常工作,你应该在公共函数中包装类 jkl 中的echo

<?php
abstract class abc {
    abstract protected function f1($name, $address);
}
class xyz extends abc {
    protected function f1($name, $address) {
        return "$name , $address";
    }
}
class jkl extends xyz {
    public function echodata(){
        return $this->f1('Ravi','Delhi');   
    }
}

echo (new jkl)->echodata();

您尝试在类定义中放置代码以调用受保护的方法,但不在方法中。 这是无效的。 您需要将其放在一个方法中:

class jkl extends xyz {
   public function go(){
     echo $this->f1('Ravi','Delhi');
   }
}

然后创建该类的实例,并从主程序主体中对其调用该方法:

$obj = new jkl;
$obj->go();