Information hiding: The practice of making sure that only as much information is exposed regarding the implementation of a class as is strictly needed. Hiding needless knowledge of implementation makes it not as much of likely that other classes will depend on that knowledge for their own implementation. It tends to decrease the strength of coupling between classes. It too reduces that chance which a change of the underlying implementation will break the other class. Making sure that all the fields of a class are defined as private, is one of the ways which we seek to encourage information hiding.