a collection of fields;
a collection of methods;
initial value expressions for the fields; and
initialization variables that are bound to initialization arguments.
In the context of the class system, an object is a collection of bindings for fields that are instantiated according to a class description.
declares (or inherits) a public method for each variable in the interface;
is derived from the class required by the interface, if any; and
specifically declares its intention to implement the interface.
A class can implement any number of interfaces. A derived class automatically implements any interface that its superclass implements. Each class also implements an implicitly-defined interface that is associated with the class. The implicitly-defined interface contains all of the class’s public method names, and it requires that all other implementations of the interface are derived from the class.
A new interface can extend one or more interfaces with additional method names; each class that implements the extended interface also implements the original interfaces. The derivation requirements of the original interface must be consistent, and the extended interface inherits the most specific derivation requirement from the original interfaces.
Classes, objects, and interfaces are all values. However, a class or interface is not an object (i.e., there are no “meta-classes” or “meta-interfaces”).