Hi !!
1) I think this is the order for intialization for a class in general.
*First all the class variables(static var) and static initializers are executed in the textual order ie order in which they appear in the class. Here if the class extends ie has a superclass etc., then the same is done for the supermost class first, then for each subclasses in order.
But note that static means - not related to each instance, so when the first obj of a class is created all the static initialization for that class is over, and that shall be used by any no of instances created later. So this step is done for the first instance of a class only.
* As per the JVM specf next, the constructor invocation begins and the instance variables are initialized and the constructor code then executed , again the superclasses to subclasses in order . This will be for each instance of that class.
You can refer to this url under initialization for more info:
http://www.javasoft.com/docs/books/vmspec/2nd-edition/html/Concepts.doc.html#19075 2) The variables in the interfaces are static and final. So naturally they cannot be associated with each class implementing that interface, but act like constants being the same for all classes implementing that interface.
But with methods, all of them are abstract and hence cannot be static. they are invoked with their obj instance only.
3) Interfaces can extend other interfaces only.
If any of the info is incorrect, hope someone will let me know.
Regards
Usha