I've seen some examples of Interfaces and Abstract Classes and how they can be connected to each other. I've been wondering how important are these two in object-oriented programming.
Why is it that some methods have to pass objects instantiating Interfaces and Abstract Classes first before adding it to a normal class when you can directly add it to a normal class? Is it for the security of your code?