If no user defined constructor is provided for a
class, compiler initializes member variables to its default values.
·
numeric data types are set
to 0
·
char data types are set to
null character(‘’)
·
reference variables are set
to null
In order to create a Constructor observe the
following rules
1.
It has the same
name as the class
2.
It should not
return a value not even void
Assignment 1: Create your First Constructor
Step 1: Type following code in your editor
Step 1: Type following code in your editor
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
class Demo{
int
value1;
int
value2;
Demo(){
value1 =
10;
value2 =
20;
System.out.println("Inside
Constructor");
}
public
void display(){
System.out.println("Value1
=== "+value1);
System.out.println("Value2
=== "+value2);
}
public static
void main(String args[]){
Demo d1 = new
Demo();
d1.display();
}
}
|
Step 2) Save , Run & Compile the code.
Observe the output.
constructor overloading
Constructor overloading is a technique in Java
in which a class can have any number of constructors that differ in parameter
lists.The compiler differentiates these constructors by taking into account the
number of parameters in the list and their type
Examples of valid constructors for class
Account are
|
1
2
3
4
5
|
Account(int a);
Account (int a,int
b);
Account (String a,int b);
|
Assignment 2:To understand Constructor Overloading
Step 1) Type the code in editor
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
class Demo{
int
value1;
int
value2;
/*Demo(){
value1 = 10;
value2 = 20;
System.out.println("Inside
1st Constructor");
}*/
Demo(int
a){
value1 = a;
System.out.println("Inside
2nd Constructor");
}
Demo(int a,int
b){
value1 = a;
value2 = b;
System.out.println("Inside 3rd
Constructor");
}
public void
display(){
System.out.println("Value1
=== "+value1);
System.out.println("Value2
=== "+value2);
}
public static
void main(String args[]){
Demo d1 = new
Demo();
Demo d2 = new
Demo(30);
Demo d3 = new
Demo(30,40);
d1.display();
d2.display();
d3.display();
}
}
|
Step 2) Save ,
Compile & Run the Code.
Step 3) Error = ?. Try and debug the error before proceeding to next step.
Step 4) Every class has a default Constructor. Default Constructor for class Demo is Demo(). In case you do not provide this constructor the compiler creates it for you and initializes the variables to default values. You may choose to override this default constructor and initialize variables to your desired values as shown in Assignment 1.
Step 3) Error = ?. Try and debug the error before proceeding to next step.
Step 4) Every class has a default Constructor. Default Constructor for class Demo is Demo(). In case you do not provide this constructor the compiler creates it for you and initializes the variables to default values. You may choose to override this default constructor and initialize variables to your desired values as shown in Assignment 1.
But if you specify a
parametrized constructor like Demo(int a) ,and want to use the default
constructor Demo(), it is mandatory for you to specify it.
In other words, in case
your Constructor is overridden , and you want to use the default constructor ,
its need to be specified.
Step 4) Uncomment line # 4-8. Save , Compile & Run the code.
constructor chaining
Consider a scenario
where a base class is extended by a child .Whenever an object of the child
class is created , the constructor of the parent class is invoked first.This is
called Constructor chaining.
Assignment 3: To understand constructor chaining
Step1 ) Copy the following code in the editor
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
class Demo{
int value1;
int value2;
Demo(){
value1 = 1;
value2 = 2;
System.out.println("Inside
1st Parent Constructor");
}
Demo(int a){
value1 = a;
System.out.println("Inside
2nd Parent Constructor");
}
public void
display(){
System.out.println("Value1
=== "+value1);
System.out.println("Value2
=== "+value2);
}
public static
void main(String args[]){
DemoChild d1 = new
DemoChild();
d1.display();
}
}
class DemoChild extends
Demo{
int value3;
int value4;
DemoChild(){
//super(5);
value3 = 3;
value4 = 4;
System.out.println("Inside the
Constructor of Child");
}
public void
display(){
System.out.println("Value1
=== "+value1);
System.out.println("Value2
=== "+value2);
System.out.println("Value1
=== "+value3);
System.out.println("Value2
=== "+value4);
}
}
|
Step 2) Run the Code. Owing to constructor
chaining , when object of child class DemoChild is created , constructor Demo()
of the parent class is invoked first and later constructor DemoChild() of the
child is created.
Expected Output =
|
1
2
3
4
5
6
|
Inside 1st Parent Constructor
Inside the Constructor of Child
Value1 === 1
Value2 === 2
Value1 === 3
Value2 === 4
|
Step3 ) You may observe the constructor of the
parent class Demo is overridden . What is you want to call the overridden
constructor Demo(int a) instead of the default constructor Demo() when your
child object is created ???
In such cases you can use
the keyword “super” to call overridden constructors of the
parent class.
Syntax:-
|
1
2
3
4
5
|
super();
--or--
super(parameter list);
|
Ex: If your constructor is like Demo(String Name,int a)
you will specify super(“Java”,5)
If used ,the keyword super needs to be the first line of code in the constructor of the child class.
you will specify super(“Java”,5)
If used ,the keyword super needs to be the first line of code in the constructor of the child class.
Step 4) Uncomment Line # 26 and run the code.
Observe the Output
No comments:
Post a Comment