因此,在我正在观看的Java教程之一中,我遇到了以下代码行:
Animal mutt = new Dog();
Dog
扩展Animal
的位置。这行有效,创建了一个引用Dog实例的Animal类型的变量。但是我想知道,我们不能这样做吗?
Dog mutt = new Dog();
谢谢,希望您能对此有所了解。
答案 0 :(得分:1)
是的,您可以同时做。但有时在某些情况下,您需要对多种类型进行操作。我用一个例子来解释它。
public void wash(Animal animal) { /* Happy Washing */ }
如果您只能洗狗而不能洗猫,则可以直接使用狗。但是,当您也可以洗猫时,应该改用Animal。
这称为liskov替换原理[1],它是SOLID Idom [2]的一部分。