I'm having a hard time understanding the semantics of the construction of the line
PrintWriter out = response.getWriter()
Firstly, I noticed that HTTPServletResponse is an interface, but does not have the method getWriter.
So how is response.getWriter() even possible? Or better yet, how is an interface variable calling a method?? 
In addition to that, does PrintWriter implement HTTPServletResponse?  
I looked through the Java implementation and it doesn't seem to be; then how is it being assigned the response.getWriter()?
Thanks
 
     
     
     
    