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

Ami*_*mit 2 php oop

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

Class Animal
{

protected function method1(){
    //some code
}

protected function method2(){
    //some code
}

}
Run Code Online (Sandbox Code Playgroud)

现在我想创建两个扩展类Animal的子类.一个是猫,另一个是狗,就像

Class Cat extends Animal
{
}
Run Code Online (Sandbox Code Playgroud)

和,

Class Dog extends Animal
{
}
Run Code Online (Sandbox Code Playgroud)

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

ter*_*ško 8

你不能这样做.这将违反Liskov替代原则.在OOP中,extends关键字可以被读作"特殊情况".

如果你懒得阅读,这里是短版本.

此外,这个讲座可能会有用.