我有类名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中设置访问修饰符,以便可以发生这种逻辑?
答案 0 :(得分:8)
你不能这样做。它会违反Liskov substitution principle。在OOP中,extends
关键字可以读作"是" 的特例。
如果您懒得阅读,here是简短版本。
此外,this lecture可能有用。