Is it generally considered a good practice to have every single class (excluding domain models) of your application based off of an interface? Even if the class is called only within your package?
Update: Based on the comments, here is a sample scenario I can think of, where I feel it would had been good to have classes based off an interface.
A Calculator class within my parent package, does some calculations and uses another class (Printer) to print out the results, to a file system. Suppose the Calculator class is public, Printer class has package protection. Now what if I want the Printer to send the result over HTTP instead of writing it to the file system?
If the Printer class was based off of an interface, and if I was injecting Printer class using Spring. I could had swapped out the implementation with a new one very easily.