我正在阅读有关php https://www.binpress.com/tutorial/the-factory-design-pattern-explained-by-example/142中工厂方法的博客文章。基于此,我有:
abstract class Toy {
public $name = '';
public $price = 0;
public function prepare() {
echo $this->name. ' is prepared';
}
public function package() {
echo $this->name. ' is packaged';
}
public function label(){
echo $this->name . ' is priced at '.$this->price;
}
}
class NY_Car extends Toy {
public $name = 'Car';
public $price = 20;
在我们的文章中:
事实证明,NyToysFactory类已被远程分支的开发人员修改,因为工作人员不想进行打包和标签工作。他们通过删除label()和package()函数修改了produceToy()。
这给我留下了一个问题:如果你要构建一个类NY_Car扩展Toy,你怎么能删除方法prepare()和package()?
答案 0 :(得分:1)
blockquote表示开发人员修改了远程分支......或者换句话说,他们通过manaully删除了这些方法。 Afaik,任何语言都无法通过扩展类来删除方法。但是,您可以通过将这些方法声明为“private”来使子类(扩展父类的类)无法访问父类中的方法。例如:
private function package() {
echo $this->name. ' is packaged';
}