We have already seen how, when we write int a = 10, a is of integer data type, which is usually 32 bits in size. When we write char c = 'a', c has a data type of character. These data types were referred to as primitive types because they can be used to hold simple information.
Objects also have types. The type of an object is often the class of that object. For example, when we create an object such as Doctor myDoctor = new Doctor(), the myDoctor object is of type Doctor. The myDoctor variable is often referred to as a reference type. As we discussed earlier, this is because the myDoctor variable doesn't hold the object itself. Rather, it holds the reference to the object in memory.
Typecasting is a way for us to change the class or interface from one type to another. It's important to note that only classes or interfaces (together, these are called types) that belong to the same superclass or implement the same interface, that is, they have a parent-child relationship, can be...