让子类调用父类


Having child class call parent class

我有时发现自己在各种不同的相关事情上执行类似的任务。例如,我可能有"书籍"、"电影"answers"歌曲",我可能有任务"addNote",它从客户端获取笔记文本,将其添加到数据库中,将其与适当的父记录相关联,并向客户端返回一些数据。我已经实现了如下所示,虽然它的工作,它似乎是错误的。是否有更好的方法来做到这一点,如果有,如何做到?由于

class parentClass
{
    protected function someTask($table)
    {
        //do the task which is common to child1/2/3Class using $table
    }
}
class child1Class extends parentClass
{
    public function someTask($dummy=NULL){parent::someTask('class1_table');}
}
class child2Class extends parentClass
{
    public function someTask($dummy=NULL){parent::someTask('class2_table');}
}
class child3Class extends parentClass
{
    public function someTask($dummy=NULL){parent::someTask('class3_table');}
}
$ajax=new child1Class(); //specific childClass based on MVC
$ajax->someTask();

你的方式是正确的。你唯一的其他选择是使父方法"public"

class parentClass
{
    public function someTask($table)
    {
        echo "hello " . $table;
    }
}
class child1Class extends parentClass
{
  // no needed method here
}
 class child2Class extends parentClass
{
  // no needed method here
}
$obj1 = new child1Class();
$obj1->someTask('class1_table');
$obj2 = new child1Class();
$obj2->someTask('class2_table');
$obj3 = new child2Class();
$obj3->someTask('class3_table');
result with obj1: "hello class1_table"
result with obj2: "hello class2_table"
result with obj3: "hello class3_table"
  • Public使方法可以通过对象直接访问。
  • Protected使该方法可以通过子类
  • 访问。
  • Private使该方法只能通过它自己的类访问。