使用私有方法的继承/多态性有点问题。
示例:
class cmsPage{
private function getBlock(){
$block = new cmsBlock();
return $block
}
function createBlock(){
$block = $this->getBlock();
$block->save();
}
//... do various things
}
class specialCmsPage extends cmsPage{
private function getBlock(){
$block = new specialCmsBlock();
return $block
}
}
当然我希望specialCmsPage继承cmsPage中的所有方法。函数getBlock()
应该确保添加到specialCmsPage的所有内容块都是specialCmsBlock类型而不是cmsBlock。
我发现,如果我从类方法中删除“私有”,它只会按照我的预期方式工作,但我更愿意使用这些,因为这些方法不应该从类外部调用。
在getBlock()
方法前面使用“私有”时,specialCmsPage始终会收到一个cmsBlock对象。
有没有办法用“私人”达到我想要的效果?