我在PHP中的继承中几乎没有混淆

时间:2017-09-13 18:11:47

标签: php oop

我有类名Animal,它由两个方法组成,比如......

Class Animal
{

protected function method1(){
    //some code
}

protected function method2(){
    //some code
}

}

现在我想创建两个扩展类Animal的子类。一个是猫 另一个是狗,比如

Class Cat extends Animal
{
}

Class Dog extends Animal
{
}

现在,我想要的是,子类Cat可以访问类Animal中定义的方法,但类Dog可以访问method1,而不是method2。如何在类Animal中设置访问修饰符,以便可以发生这种逻辑?

1 个答案:

答案 0 :(得分:8)

你不能这样做。它会违反Liskov substitution principle。在OOP中,extends关键字可以读作"是" 的特例。

如果您懒得阅读,here是简短版本。

此外,this lecture可能有用。