What

Unlike OOP, IOP or Protocol-Oriented Programming, is the focus on defining and interacting with interfaces (aka contracts). They define what a class or object should do, but not how it does it (similar to a contract).

// Interface
interface Animal {
    void makeSound();
}
 
// Implementing the interface
class Dog implements Animal {
    @Override
    public void makeSound() {
        System.out.println("Dog barks");
    }
}