L3Harris Interview Question

What is the difference between an Interface, Abstract class, and normal class in OOP and why would you use each one?