what does each dictionary mean technically?
The first Dictionary
indicates that the type of the variable is Dictionary
. Since you’re creating a new dictionary, you call the Dictionary
class’ constructor i.e. Dictionary()
. You can think of the new
keyword as a word that you need to write in order to call any constructor.
That said, these are two valid statements (although they don’t do anything practical):
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
Same exact question really but can the left and right side be different?
This is called polymorphism. As I said, the first Dictionary
represents the type of the variable, so AbstractList<String>
here:
AbstractList<String> list = new LinkedList<String>();
represents the type of the variable list
as well.
However, a variable of type AbstractList
not only can store AbstractList
objects. It can also store objects that are compatible with AbstractList
. In this case, it is storing a LinkedList<String>
.
You might ask why LinkedList
compatible with AbstractList
. Because the former inherits from the latter!
To sum up,
AbstractList<String> list = new LinkedList<String>();
The left side says:
I have a variable that can only store
AbstractList<String>
objects and objects that are compatible with it.
The right side says:
I’m creating a new
LinkedList<String>
by calling its constructor.
solved Creating an object from a class [closed]