为什么Java中允许不同类型的对象引用?

Sal*_*kci 4 java oop polymorphism

我想知道为什么允许它有不同类型的对象引用?例如;

Animal cow = new Cow();
Run Code Online (Sandbox Code Playgroud)

您能举例说明使用不同类型的对象引用是否有用?

编辑:Cow extends Animal

Jon*_*eet 10

这是多态性和抽象的核心.例如,这意味着我可以写:

public void handleData(InputStream input) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

...并处理任何类型的输入流,无论是来自文件,网络,内存等.或者同样,如果你有一个List<String>,你可以要求它的元素0,无论实现等等.

将子类的实例视为超类的实例的能力称为Liskov的替换原则.它允许松耦合和代码重用.

另请阅读Java教程Polymorphism部分以获取更多信息.

  • 事实上,这是你作为Java程序员存在的面包和黄油.;) (6认同)
  • @RohitJain:排序.虽然我认为类继承经常被大量过度使用...(我对实现抽象接口以及使用组合进行代码重用更加满意.) (5认同)