Java 为什么创建一种类型的引用变量,但将其分配给另一种类型?
因此,在我观看的一个Java教程中,我遇到了以下代码行:Java 为什么创建一种类型的引用变量,但将其分配给另一种类型?,java,oop,Java,Oop,因此,在我观看的一个Java教程中,我遇到了以下代码行: Animal mutt = new Dog(); 其中Dog扩展Animal。这一行工作,创建一个类型动物变量引用狗的实例。但我想知道,我们不能改成这样吗 Dog mutt = new Dog(); 谢谢,我希望你能说明这一点。是的,两者都可以。但有时在某些情况下,您需要对多个类型进行操作。我用一个例子来解释它更容易 public void wash(Animal animal) { /* Happy Washing */ } 如果
Animal mutt = new Dog();
其中Dog
扩展Animal
。这一行工作,创建一个类型动物变量引用狗的实例。但我想知道,我们不能改成这样吗
Dog mutt = new Dog();
谢谢,我希望你能说明这一点。是的,两者都可以。但有时在某些情况下,您需要对多个类型进行操作。我用一个例子来解释它更容易
public void wash(Animal animal) { /* Happy Washing */ }
如果你只能洗狗而不能洗猫,那么你可以直接用狗。但当你也可以洗猫的时候,你应该用动物来代替
这被称为liskov替换原理[1],是固体Idom[2]的一部分
- [1]
- [2]