HashMap myMap = new HashMap<Character, Character>();
Map myMap = new HashMap<Character, Character>();
在面试过程中,从面向对象编程和多态性的角度,有什么更技术性的方式来描述上述两行代码之间的差异?
非技术性的方式似乎是:
等号的左边是我们与对象“对话”的方式,右边表示对象实际上是什么。左侧可以是一个接口(interface),但右侧必须是一个可实例化的类,因为我们无法实例化接口(interface)。
最佳答案
描述它们的更技术性方法是在第一行中声明一个名为 myMap
且类型为 HashMap
的变量,并将其实例化为相同类型的对象 HashMap
。在第二行中,您声明一个名为 myMap
且类型为 Map
的变量,并将其实例化为 HashMap
类型的对象,这可以通过以下方式实现:由于对象类型 Map
和 HashMap
之间的层次类关系而利用多态性。
关于java - 用对象声明和实例化解释面向对象编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58384957/