Once the name is resolved, the reference is rewritten as a numeric offset, enabling the Java interpreter to run at full speed. Finally, the storage layout of objects is not determined by the compiler. The layout of objects in memory is deferred to run time and determined by the interpreter. Updated classes with new instance variables or methods can be linked in without affecting existing code. At the small expense of a name lookup the first time any name is encountered, the Java language eliminates the fragile superclass problem.
Libraries can freely add new methods and instance variables without any effect on their clients.
Your life as a programmer is simpler. An interface in the Java language is simply a specification of methods that an object implements. The concept of an interface in the Java language was borrowed from the Objective-C An interface does not include instance variables or implementation code. You can import and use multiple interfaces in a flexible manner, providing the benefits of multiple inheritance without the inherent difficulties created by the usual rigid class inheritance structure. There is a class named Class , instances of which contain run-time class definitions.