为什么要创建一种类型的引用变量,但将其分配给另一种类型呢?

时间:2018-11-08 21:04:24

标签: java oop

因此,在我正在观看的Java教程之一中,我遇到了以下代码行:

Animal mutt = new Dog();

Dog扩展Animal的位置。这行有效,创建了一个引用Dog实例的Animal类型的变量。但是我想知道,我们不能这样做吗?

Dog mutt = new Dog();

谢谢,希望您能对此有所了解。

1 个答案:

答案 0 :(得分:1)

是的,您可以同时做。但有时在某些情况下,您需要对多种类型进行操作。我用一个例子来解释它。

public void wash(Animal animal) { /* Happy Washing */ }

如果您只能洗狗而不能洗猫,则可以直接使用狗。但是,当您也可以洗猫时,应该改用Animal。

这称为liskov替换原理[1],它是SOLID Idom [2]的一部分。