why using Interface as a type instead of the class itself in Java? can someone please tell me why is it recommended to use interface as datatype ??