0% found this document useful (0 votes)
8 views17 pages

Unit 3 Notes

Uploaded by

omkartandale17
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views17 pages

Unit 3 Notes

Uploaded by

omkartandale17
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

Unit III

Constructors and Destructors

Constructors: Introduction, Use of Constructor, Characteristics of Constructors, Types of


Constructor,
Constructor Overloading, Dynamic Initialization of an Object, Constructor with Default
Arguments,
Symbolic Constants, Garbage Collection: Destructors and Finalizes.

Constructors in Java
In Java, a constructor is a block of codes similar to the method. It is called when an
instance of the class is created. At the time of calling constructor, memory for the object
is allocated in the memory.

It is a special type of method which is used to initialize the object.

Every time an object is created using the new() keyword, at least one constructor is called.

It calls a default constructor if there is no constructor available in the class. In such case,
Java compiler provides a default constructor by default.

There are two types of constructors in Java: no-arg constructor, and parameterized
constructor.

Note: It is called constructor because it constructs the values at the time of object creation.
It is not necessary to write a constructor for a class. It is because java compiler creates
a default constructor if your class doesn't have any.

Rules for creating Java constructor


There are two rules defined for the constructor.

1. Constructor name must be the same as its class name

2. A Constructor must have no explicit return type

3. A Java constructor cannot be abstract, static, final, and synchronized

Types of Java constructors

There are two types of constructors in Java:

1. Default constructor (no-arg constructor)

2. Parameterized constructor
Java Default Constructor
A constructor is called "Default Constructor" when it doesn't have any parameter.

Syntax of default constructor:


<class_name>(){}
Example of default constructor

In new example, we are creating the no-arg


constructor in the Bike class. It will be invoked at
the time of object creation.

//Java Program to create and call a default constructor

class Bike1{

//creating a default constructor

Bike1(){System.out.println("Bike is created");}

//main method

public static void main(String args[]){

//calling a default constructor

Bike1 b=new Bike1();

Output:

Bike is created

Q) What is the purpose of a default constructor?


The default constructor is used to provide the default values to the object like 0, null, etc.,
depending on the type.

Example of default constructor that displays the default values

//Let us see another example of default constructor

//which displays the default values


class Student3{

int id;

String name;

//method to display the value of id and name

void display(){System.out.println(id+" "+name);}

public static void main(String args[]){

//creating objects

Student3 s1=new Student3();

Student3 s2=new Student3();

//displaying values of the object

s1.display();

s2.display();

Output:

0 null
0 null

Explanation:In the above class,you are not creating any constructor so compiler
provides you a default constructor. Here 0 and null values are provided by default
constructor.

Java Parameterized Constructor

A constructor which has a specific number of parameters is called a parameterized


constructor.

Why use the parameterized constructor?

The parameterized constructor is used to provide different values to distinct objects.


However, you can provide the same values also.
Example of parameterized constructor

In this example, we have created the constructor of Student class that have two
parameters. We can have any number of parameters in the constructor.

//Java Program to demonstrate the use of the parameterized constructor.

class Student4{

int id;

String name;

//creating a parameterized constructor

Student4(int i,String n){

id = i;

name = n; }

//method to display the values

void display()

System.out.println(id+" "+name);

public static void main(String args[]){

//creating objects and passing values

Student4 s1 = new Student4(111,"Karan");

Student4 s2 = new Student4(222,"Aryan");

//calling method to display the values of object

s1.display();

s2.display();
}

}
Output:

111 Karan
222 Aryan
Constructor Overloading in Java
In Java, a constructor is just like a method but without return type. It can also be
overloaded like Java methods.

Constructor overloading in Java is a technique of having more than one constructor with
different parameter lists. They are arranged in a way that each constructor performs a
different task. They are differentiated by the compiler by the number of parameters in the
list and their types.

Example of Constructor Overloading

//Java program to overload constructors

class Student5{

int id;

String name;

int age;

//creating two arg constructor

Student5(int i,String n){

id = i;

name = n;

}
//creating three arg constructor
Java Copy Constructor

There is no copy constructor in Java. However, we can copy the values from one object
to another like copy constructor in C++.

There are many ways to copy the values of one object into another in Java. They are:

o By constructor

o By assigning the values of one object into another

o By clone() method of Object class

In this example, we are going to copy the values of one object into another using Java
constructor.
//Java program to initialize the values from one object to another object.

class Student6{

int id;

String name;

//constructor to initialize integer and string

Student6(int i,String n){

id = i;

name = n;

//constructor to initialize another object

Student6(Student6 s){

id = s.id;
name =s.name;

void display(){System.out.println(id+" "+name);}

public static void main(String args[]){

Student6 s1 = new Student6(111,"Karan");

Student6 s2 = new Student6(s1);

s1.display();

s2.display();

}
Output:

111 Karan
111 Karan
Copying values without constructor
We can copy the values of one object into another by assigning the objects values to
another object. In this case, there is no need to create the constructor.

1. class Student7{
2. int id;
3. String name;
4. Student7(int i,String n){
5. id = i;
6. name = n;
7. }
8. Student7(){}
9. void display(){System.out.println(id+"

"+name);} 10.

11. public static void main(String args[]){


12. Student7 s1 = new Student7(111,"Karan");
13. Student7 s2 = new Student7();
14. s2.id=s1.id;
15. s2.name=s1.name;
16. s1.display();
17. s2.display();
18. }
19. }
Test it Now

Output:

111 Karan
111 Karan
Q) Does constructor return any value?
Yes, it is the current class instance (You cannot use return type yet it returns a value).

Can constructor perform other tasks instead of initialization?

Yes, like object creation, starting a thread, calling a method, etc. You can perform any
operation in the constructor as you perform in the method.

Is there Constructor class in Java?

Yes.

What is the purpose of Constructor class?

Java provides a Constructor class which can be used to get the internal information of a
constructor in the class. It is found in the java.lang.reflect package.

Student5(int i,String n,int a){

id = i;

name = n;

age=a;

void display(){System.out.println(id+" "+name+" "+age);}

public static void main(String args[]){

Student5 s1 = new Student5(111,"Karan");

Student5 s2 = new

Student5(222,"Aryan",25); s1.display();

s2.display();
}

Output:
111 Karan 0
222 Aryan 25
Difference between constructor and method in Java

There are many differences between constructors and methods. They are given
below.

Java Constructor Java Method

A constructor is used to A method is used to expose the behavior of an


initialize the state of an object.
object.

A constructor must not A method must have a return type.


have a return type.

The constructor is invoked The method is invoked explicitly.


implicitly.

The Java compiler provides The method is not provided by the compiler in any
a default constructor if you case.
don't have any constructor
in a class.

The constructor name must The method name may or may not be same as the
be same as the class name. class name.

Java Copy Constructor

There is no copy constructor in Java. However, we can copy the values from one object
to another like copy constructor in C++.
There are many ways to copy the values of one object into another in Java. They are:

o By constructor

o By assigning the values of one object into another

o By clone() method of Object class

In this example, we are going to copy the values of one object into another using Java
constructor.

//Java program to initialize the values from one object to another object.

class Student6{

int id;

String name;

//constructor to initialize integer and string

Student6(int i,String n){

id = i;

name = n;

}
//constructor to initialize another object

Student6(Student6 s){

id = s.id;

name =s.name;

void display(){System.out.println(id+" "+name);}

public static void main(String args[]){

Student6 s1 = new Student6(111,"Karan");

Student6 s2 = new Student6(s1);

s1.display();

s2.display();
}
}

Output:

111 Karan
111 Karan

Copying values without constructor

We can copy the values of one object into another by assigning the objects values to
another object. In this case, there is no need to create the constructor.

class Student7{

int id;

String name;

Student7(int i,String n){

id = i;

name = n;

Student7(){}

void display(){System.out.println(id+" "+name);}

public static void main(String args[]){

Student7 s1 = new Student7(111,"Karan");

Student7 s2 = new Student7();

s2.id=s1.id;

s2.name=s1.name;

s1.display();

s2.display();

Output:
111 Karan
111 Karan

Q) Does constructor return any value?

Yes, it is the current class instance (You cannot use return type yet it returns
a value).

Can constructor perform other tasks instead of initialization?

Yes, like object creation, starting a thread, calling a method, etc. You can
perform any operation in the constructor as you perform in the method.

Is there Constructor class in Java?

Yes.

What is the purpose of Constructor class?


Java provides a Constructor class which can be used to get the internal information
of a constructor in the class. It is found in the java.lang.reflect package.

What is a destructor?
Destructor is an instance member function that is invoked automatically whenever an object
is going to be destroyed. Meaning, a destructor is the last function that is going to be called
before an object is destroyed.
 A destructor is also a special member function like a constructor. Destructor destroys
the class objects created by the constructor.
 Destructor has the same name as their class name preceded by a tilde (~) symbol.
 It is not possible to define more than one destructor.
 The destructor is only one way to destroy the object created by the constructor. Hence
destructor can-not be overloaded.
 Destructor neither requires any argument nor returns any value.
 It is automatically called when an object goes out of scope.
 Destructor release memory space occupied by the objects created by the constructor.
 In destructor, objects are destroyed in the reverse of an object creation.
The thing is to be noted here if the object is created by using new or the constructor uses
new to allocate memory that resides in the heap memory or the free store, the destructor
should use delete to free the memory.
Syntax
The syntax for defining the destructor within the class:
~ <class-name>() {
// some instructions
}
The syntax for defining the destructor outside the class:
<class-name> :: ~<class-name>() {
// some instructions
}
Example 1
The below code demonstrates the automatic execution of constructors and destructors when
objects are created and destroyed, respectively.

 C++

// C++ program to demonstrate the execution of constructor

// and destructor

#include <iostream>

using namespace std;

class Test {

public:

// User-Defined Constructor

Test() { cout << "\n Constructor executed"; }

// User-Defined Destructor

~Test() { cout << "\nDestructor executed"; }

};

main()
{

Test t;

return 0;

Output
Constructor executed
Destructor executed

Properties of Destructor

The following are the main properties of Destructor:


 The destructor function is automatically invoked when the objects are destroyed.
 It cannot be declared static or const.
 The destructor does not have arguments.
 It has no return type not even void.
 An object of a class with a Destructor cannot become a member of the union.
 A destructor should be declared in the public section of the class.
 The programmer cannot access the address of the destructor.

When is the destructor called?

A destructor function is called automatically when the object goes out of scope:
1. the function ends
2. the program ends
3. a block containing local variables ends
4. a delete operator is called
Note: destructor can also be called explicitly for an object.

How to call destructors explicitly?

We can call the destructors explicitly using the following statement:


object_name.~class_name()

How are destructors different from normal member functions?

 Destructors have the same name as the class preceded by a tilde (~)
 Destructors don’t take any argument and don’t return anything
 C++

#include <bits/stdc++.h>

using namespace std;

class String {

private:

char* s;

int size;

public:

String(char*); // constructor

~String(); // destructor

};

String::String(char* c)

size = strlen(c);

s = new char[size + 1];

strcpy(s, c);

String::~String() { delete[] s; }
int main()

String str = "Hello, World!";

String myString(str);

cout << "String: " << myString.s << endl;

return 0;

}
Difference between Constructor and Destructor in C++

S.No. Constructors Destructors

1. The constructor initializes the class and allots If the object is no longer required, then destructors
the memory to an object. demolish the objects.

2. When the object is created, a constructor is When the program gets terminated, the destructor
called automatically. is called automatically.

3. It receives arguments. It does not receive any argument.

4. A constructor allows an object to initialize some A destructor allows an object to execute some code
of its value before it is used. at the time of its destruction.

5. It can be overloaded. It cannot be overloaded.

6. When it comes to constructors, there can be When it comes to destructors, there is constantly a
various constructors in a class. single destructor in the class.

7. They are often called in successive order. They are often called in reverse order of
constructor.

You might also like