例如
Dictionary webster = new Dictionary();
每个词典在技术上意味着什么?我知道我正在创建一个具有方法和变量的对象。但是是什么导致了这个?
此外,我正在学习数据结构..真的相同的问题,但左右两侧是否可以不同?实施例
ArrayList<String> list = new LinkedList<String>();
我知道
ArrayList<String list = new ArrayList<String>(); works
但就像我说的那样,当我的对象被创建时,我对每一方带来的东西感到困惑。
答案 0 :(得分:-1)
每个字典在技术上意味着什么?
第一个Dictionary
表示变量的类型为Dictionary
。由于您要创建新词典,因此请调用Dictionary
类'构造函数,即Dictionary()
。您可以将new
关键字视为需要编写的单词,以便调用任何构造函数。
那就是说,这是两个有效的陈述(尽管他们没有做任何实际的事情):
Dictionary dict; // declares a variable of type Dictionary but doesn't give it a value
new Dictionary(); // creates a new dictionary but doesn't put it into some variable
确实相同的问题,但左右两侧是否可以不同?
这称为多态。正如我所说,第一个Dictionary
代表变量的类型,所以AbstractList<String>
在这里:
AbstractList<String> list = new LinkedList<String>();
也代表变量list
的类型。
但是,AbstractList
类型的变量不仅可以存储AbstractList
个对象。它还可以存储与AbstractList
兼容的对象。在这种情况下,它存储LinkedList<String>
。
您可能会问为什么LinkedList
与AbstractList
兼容。因为前者继承了后者!
总结一下,
AbstractList<String> list = new LinkedList<String>();
左边说:
我有一个只能存储
AbstractList<String>
对象和与之兼容的对象的变量。
右边说:
我正在通过调用其构造函数创建一个新的
LinkedList<String>
。