java - 用对象声明和实例化解释面向对象编程

标签 java oop collections polymorphism

HashMap myMap = new HashMap<Character, Character>();

Map myMap = new HashMap<Character, Character>();

在面试过程中,从面向对象编程和多态性的角度,有什么更技术性的方式来描述上述两行代码之间的差异?

非技术性的方式似乎是:

等号的左边是我们与对象“对话”的方式,右边表示对象实际上是什么。左侧可以是一个接口(interface),但右侧必须是一个可实例化的类,因为我们无法实例化接口(interface)。

最佳答案

描述它们的更技术性方法是在第一行中声明一个名为 myMap 且类型为 HashMap 的变量,并将其实例化为相同类型的对象 HashMap 。在第二行中,您声明一个名为 myMap 且类型为 Map 的变量,并将其实例化为 HashMap 类型的对象,这可以通过以下方式实现:由于对象类型 MapHashMap 之间的层次类关系而利用多态性。

关于java - 用对象声明和实例化解释面向对象编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58384957/

相关文章:

java - 获取 JDBC 连接时出错 : Could not enlist in transaction on entering meta-aware object

oop - SOLID 与 YAGNI

java - Collections.sort 具有多个字段

java - 更改 Swing GUI 的边界和 JButton 的命名

java - 复选框元素的 Xpath 通过按值定位它在标签元素之后

javascript - 原型(prototype)与类

java - ArrayList 内容意外修改

Java 全局 isEmpty() 方法

java - 使用 Java 国际化 (i18n) 修改 Wicket 的 XML 资源包

oop - (如何) raku 做类同义词?