> In "System.out", out is class variable of 'System'
> class.
>
> How it is possible for 'out' to refer to an object of
> 'PrintStream' class whereas an instance of
> PrintStream class should only be referenced by a
> variable whose data type is PrintStream.
>
> Can you kindly explain it?
System.out is a PrintStream. what did you think it was?
incidentally, PrintStream instances needn't be dereferenced as a PrintStream. any supertype of PrintStream can be used (google "polymorphism")