What is the difference between an Interface and an Abstract Class in Java, and when would you use each?