Reflection
Java permits the program to discover information about the currently running program, this is called Reflection.
Reflection begins with the class Class. Every object can be asked its class and will respond with an instance of this class.
Using the class object, we can discover the methods that an object implements, and use the class object to create new instances of a class.
A class object can return the class object that represents its parent class.