繁体   English   中英

让孩子上课叫家长上课

[英]Having child class call parent class

有时我发现自己在各种不同的相关事物上执行相似的任务。 例如,我可能有“书”,“电影”和“歌曲”,我可能有任务“ 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使方法可以通过对象直接访问。
  • 受保护使方法可通过子类访问
  • 专用使该方法只能通过其自己的类进行访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM