Static binding is resolved at compile time based on the reference variable type. Dynamic binding is resolved at runtime based on the actual object type. The document provides examples of static and dynamic binding using method overriding. It also defines abstract classes and interfaces. Abstract classes can contain abstract and non-abstract methods while interfaces contain only abstract methods. The key difference between abstract classes and interfaces is that abstract classes support inheritance of implementation while interfaces support multiple inheritance of signature only.