如果我有一个类,动物类。
我有一个类Dog和一个类Cat,它们都继承了Animal。
Cat可以调用Animal内部的方法。但是Cat可以调用Dog的方法吗?
发布于 2013-01-24 07:22:06
定义在超类中的方法可以被任何子类访问。但是“姊妹”类不能访问彼此的(私有)方法。
因此,如果您的类Cat和Dog继承自Animal,那么Cat和Dog对象都可以从Animal调用方法,但它们不能(一定不能)访问对方的方法。
发布于 2013-01-24 07:23:40
你的问题的答案可以这样回答,比如这是一只猫,一只狗?
我让你来回答这个问题。
发布于 2013-01-24 07:21:58
不,它不能,也不应该(至少在谈论适当的OOP时不应该)。如果一只猫真的需要一只狗(不管是什么病的原因),你应该给猫注射狗。如果你认为你需要它,你可能有错误的继承/抽象。
class Animal
{
public annoy();
}
class Cat extends Animal
{
private $dog;
public function __construct(Dog $dog)
{
$this->dog = $dog;
}
public function annoyDog()
{
$this->dog->annoy();
}
}
class Dog extends Animal
{
}
$dog = new Dog();
$cat = new Cat($dog);
$cat->annoyDog();上面是一个注入的例子。注意,正如Tony Hopkinson所说,在本例中,您调用的是dog实例上的方法。你可以在类上调用方法,如果它们是public static的,但是因为它被标记为OOP,所以你真的不应该这样做。
https://stackoverflow.com/questions/14491186
复制相似问题