从类创建对象

时间:2016-10-05 05:08:11

标签: java

例如

Dictionary webster = new Dictionary();

每个词典在技术上意味着什么?我知道我正在创建一个具有方法和变量的对象。但是是什么导致了这个?

此外,我正在学习数据结构..真的相同的问题,但左右两侧是否可以不同?实施例

ArrayList<String> list = new LinkedList<String>();

我知道

ArrayList<String list = new ArrayList<String>(); works

但就像我说的那样,当我的对象被创建时,我对每一方带来的东西感到困惑。

1 个答案:

答案 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>

您可能会问为什么LinkedListAbstractList兼容。因为前者继承了后者!

总结一下,

AbstractList<String> list = new LinkedList<String>();

左边说:

  

我有一个只能存储AbstractList<String>对象和与之兼容的对象的变量。

右边说:

  

我正在通过调用其构造函数创建一个新的LinkedList<String>