Downcasting with interfaces and classes
The DrawableInComic
interface defines one of the method requirements for the drawSpeechBalloon
method with destination
as an argument of the DrawableInComic
type, which is the same type that the interface defines. The following is the first line in our sample code that called this method:
teddy.drawSpeechBalloon(winston, "How do you do?");
We called the method implemented in the SpiderDog
class because teddy
is an instance of SpiderDog
. We passed a SpiderDog
instance, winston
, to the destination
argument. The method works with the destination
argument as an instance that implements the DrawableInComic
interface. Hence, whenever we reference the destination
variable, we will only be able to see what the DrawableInComic
type defines.
We can easily understand what happens under the hood when Java downcasts a type from its original type to a target type, such as an interface to which the class conforms. In this case, SpiderDog
is downcasted to DrawableInComic...