Inheritance is an object-oriented mechanism whereby subclasses inherit the public and protected instance variables and methods from their superclasses.
Dynamic binding (or late binding) is the mechanism by which a method call is bound to (associated with) the correct implementation of the method at runtime. In Java, all method calls except for final or private methods are resolved using dynamic binding.
Static binding (or early binding) is the association of a method call with its corresponding implementation at compile time.
Polymorphism is an object-oriented language feature in which a method call can lead to different actions depending on the object on which it is invoked. A polymorphic method is a method signature that is given different implementations by different classes in a class hierarchy.
A static type is a variable's declared type. A dynamic type, or actual type, is the type of object assigned to that variable at a given point in a running program.
An abstract method is a method definition that lacks an implementation. An abstract class is one that contains one or more abstract methods. An abstract class can be subclassed but not instantiated.
A Java interface is a class that contains only method signatures and (possibly) constant declarations, but no variables. An interface can be implemented by a class by providing implementations for all of its abstract methods.