When one class is derived from another it inherits all the methods of the parent class. This is what we mean when we say different classes of objects respond to the same request. If a match is found, that method is invoked If a match is not found, the signature is compared against the superclass s method signature. This process is repeated until a match is found. A match is guaranteed because otherwise the Java compiler would give an error.
Classes can be abstract, as well as methods.
You can derive a class from an interface, and if you implement ALL the required methods, you can instantiate that class.