Difference between revisions of "Instantiation"

From Suhrid.net Wiki
Jump to navigationJump to search
Line 11: Line 11:
  
 
* Initialization of fields can be done through field declaration statements.
 
* Initialization of fields can be done through field declaration statements.
 +
* Declaration of field must occur before its usage in any initializer if it is used on the RHS of an assignment. Example:
 +
 +
<syntaxhighlight lang="java5">
 +
 +
public class Init4 {
 +
 +
int length = 10;
 +
 +
int area = length * width; //Illegal since width is a forward reference being used on the RHS.
 +
 +
int width = 20;
 +
 +
}
 +
 +
 +
</syntaxhighlight>
  
 
== Initialization Blocks ==
 
== Initialization Blocks ==

Revision as of 21:56, 16 August 2011

Constructors

  • Every class - including Abstract classes - MUST have a constructor.
  • Constructor chaining is built in. Every class constructor will call its default superclass constructor using super().
  • Every constructor as its first statement has a call to this() or super().
  • Compiler will only automatically insert call to no-arg super() or this().
  • CANNOT call an instance method or access instance variables till the super constructor has run.
  • Only Static variables can be accessed as a call to super() or this().

Field Initializers

  • Initialization of fields can be done through field declaration statements.
  • Declaration of field must occur before its usage in any initializer if it is used on the RHS of an assignment. Example:
public class Init4 {
	
	int length = 10;
	
	int area = length * width; //Illegal since width is a forward reference being used on the RHS.
	
	int width = 20;

}

Initialization Blocks

  • A static initialization block runs when the class is first loaded.(Runs only once)
  • An instance init block runs every time a new instance is created.
  • An instance init block runs right after the call to super() in a constructor (ie. after all the super-constructors have run).
  • In case of multiple init blocks (either instance and static) they run in the order in which they are defined.