I have class GUI so I can create object like this:
GUI g1 = new GUI();
and a reference variable like this:
GUI g2;
Now as much as I know, g2 is a reference variable which gives reference to GUI class and g1 is an object of GUI class. What is the difference between g1 and g2? I can use property of GUI class with object but what is the possible usage of g2?
References are names. Objects are stuff. You can have different names for stuff, even for stuff that doesn’t actually exist.
You can declare names, without actually giving them any “real” meaning, like this:
You can assign meaning (real stuff to refer to) to names with the = operator:
Names can change their meaning over time. The same name can refer to different things at different points in history.
There are also synonyms: multiple names can refer to the same thing:
That’s pretty much what references do. They are names meant to refer to stuff.
Stuff can be created:
Stuff can be created and named on the spot for later reference (literally!):
And stuff can be referred to, using its name (or any of its names!):
Different stuff of the same kind (Class) can be created, and named differently:
🙂