This document provides an overview of abstract classes and interfaces in Java. It defines what an interface is, how to define and use interfaces, and why interfaces are used instead of abstract classes. Key points include:
Interfaces are similar to abstract classes but can only contain abstract methods and constants. Classes implement interfaces to inherit their methods. Abstract classes can contain both abstract and non-abstract methods.
Interfaces are used instead of abstract classes to allow for multiple inheritance in Java, since a class can only extend one parent class but implement multiple interfaces. Interfaces define weak "is-a" relationships while abstract classes define strong "is-a" relationships.
The UML notation for interfaces uses <<interface>> to differentiate them