Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 玻璃物体。只能使用该引用变量调用子类的继承/重写方法。这在编译时决定。[如果被调用的fn由引用变量标识或否]_Oop_Class - Fatal编程技术网

Oop 玻璃物体。只能使用该引用变量调用子类的继承/重写方法。这在编译时决定。[如果被调用的fn由引用变量标识或否]

Oop 玻璃物体。只能使用该引用变量调用子类的继承/重写方法。这在编译时决定。[如果被调用的fn由引用变量标识或否],oop,class,Oop,Class,Dog类对象不知道独占的Cat类函数[继承的和重写的函数除外],因此无法调用这些方法 正如其他人所指出的,如果你有这样的情况,你可能不会寻求继承。@DWright,;)因此,除非您明确地执行朋友级狗?@stackplasm,否则它不会工作。你也可以把猫和狗交给对方,但这会带来各种潜在的问题。你为什么想让它工作?我不会的。把猫变成狗表明遗传是错误的机制。Friend是一个黑客,万不得已而不是第一个。@PeeHaa,这是一个不容忍Javascript的答案的原型:-]。@DWright,;)因此,除

Dog类对象不知道独占的Cat类函数[继承的和重写的函数除外],因此无法调用这些方法



正如其他人所指出的,如果你有这样的情况,你可能不会寻求继承。

@DWright,;)因此,除非您明确地执行
朋友级狗
?@stackplasm,否则它不会工作。你也可以把猫和狗交给对方,但这会带来各种潜在的问题。你为什么想让它工作?我不会的。把猫变成狗表明遗传是错误的机制。Friend是一个黑客,万不得已而不是第一个。@PeeHaa,这是一个不容忍Javascript的答案的原型:-]。@DWright,;)因此,除非您明确地执行
朋友级狗
?@stackplasm,否则它不会工作。你也可以把猫和狗交给对方,但这会带来各种潜在的问题。你为什么想让它工作?我不会的。把猫变成狗表明遗传是错误的机制。Friend是一个黑客,万不得已,而不是第一个。@PeeHaa,这是一个不容忍Javascript的答案的原型:-]你能解释一下“注入”是什么意思吗?如果你把狗的距离传给猫的话。Cat仍然不会调用dogs方法,它们会在您传入的dog上被调用。@Barranka:Inject的意思是“从外部灵活配置另一个对象”。该术语来自依赖项注入,值得在谷歌上搜索更多信息。@Barranka-Related:。事实上,整个干净的代码系列都很好:把狗注射到猫身上?可视化。。。令人厌恶的SCNR:)+1提到了错误的继承。你能解释一下“注入”是什么意思吗?如果你把狗的距离传给猫。Cat仍然不会调用dogs方法,它们会在您传入的dog上被调用。@Barranka:Inject的意思是“从外部灵活配置另一个对象”。该术语来自依赖项注入,值得在谷歌上搜索更多信息。@Barranka-Related:。事实上,整个干净的代码系列都很好:把狗注射到猫身上?可视化。。。令人厌恶的SCNR:)+1用于提到错误的继承。+1-我经常发现,用(英语)语言构建oo问题可以很容易地解决。一个经典的例子是“是A”和“有A”。这是你应该问的第一个问题。然后是你最后问的近亲,猫还是猫吗?说到自然语言中的领域术语及其关系,OOP就是为了这个而发明的+1-我经常发现,如果用(英语)语言来表达,oo问题可以很容易地解决。一个经典的例子是“是A”和“有A”。这是你应该问的第一个问题。然后是你最后问的近亲,猫还是猫吗?说到自然语言中的领域术语及其关系,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();
If I have a class, class Animal.

And I have a class Dog and a class Cat both inheriting Animal.

Cat can call methods inside Animal. But can Cat call methods of Dog?
class Animal
   bark:-> "i'm an animal"

class Dog extends Animal
  eatBone : -> "i'm eating a bone"

class Cat extends Animal

cat = new Cat

alert Dog::eatBone.call cat