I have a question regarding interfaces. If I have an interface Printable which has (for example) a method "print", and I create a class Book which implements the interface, I can create an object of Book in two different ways:
Book b = new Book();
Printable b1 = new Book();
I know that I can only reach the methods declared in the interface Printable if I create the object using the second method, but why do we have this option? In which cases would one want to only access the methods declared in the interface, and not be able to access the other methods that are specific to the class in question? Maybe a stupid question, but I don't understand the use of the second option shown above.