Vishal,
The idea is that your class doesn't care which implementation it gets as long as the interface is implemented. This makes code more flexible.
For example, suppose I have a class that writes to a "database." If I take an interface, I can pass in a mock version for
testing or a CSV "database" or one that accesses Oracle.