Please explain out variable in System.out
out is sometimes referred to be object of type OutputStream
sometimes referred to as object of type PrintStream
and even when it is predefined variable, it is sometimes assigned it to PrintWriter object
PrintWriter out= response.getWriter();
is it due to the fact that a superclass reference can be assigned the reference to objects of its subclass?
Super class reference variable can hold the reference of sub-class object. The OutputStream is an abstract super class of all OutputStream of bytes classes, so you can say the
System.outfield as OutputStream type.