Monday, November 25, 2019

Time for JAVA #002 - constructor


Constructor is a block of code that initializes the newly created object. A constructor resembles an instance method in java but it’s not a method as it doesn’t have a return type.
This is how it looks like (the simplest declared constructor - no arg):


There are three types of constructors: Default, No-arg constructor and Parameterized.

1) If you do not implement any constructor in your class, Java compiler inserts a default constructor into your code on your behalf (it is invisible).

2) Constructor with no arguments is known as no-arg constructor. The signature is same as default constructor, however body can have any code unlike default constructor where the body of the constructor is empty.

3) Constructor with arguments(or you can say parameters) is known as Parameterized constructor.


Output will be:
Id: 00001 Name: Stalkerowaty
Id: 00002 Name: Stalkerowaty2

Although you may see some people claim that that default and no-arg constructor is same but in fact they are not, even if you write public Demo() { } in your class Demo it cannot be called default constructor since you have written the code of it.

Difference between Constructor and Method

The purpose of constructor is to initialize the object of a class while the purpose of a method is to perform a task by executing java code. Constructors cannot be abstract, final, static and synchronised while methods can be. Constructors do not have return types while methods do.

Quick Recap of all info:
1) Every class has a constructor whether it’s a normal class or a abstract class.
2) Constructors are not methods and they don’t have any return type.
3) Constructor name should match with class name.
4) Constructor can use any access specifier, they can be declared as private also. Private constructors are possible in java but there scope is within the class only.
5) Like constructors method can also have name same as class name, but still they have return type, though which we can identify them that they are methods not constructors.
6) If you don’t implement any constructor within the class, compiler will do it for.
7) this() and super() should be the first statement in the constructor code. If you don’t mention them, compiler does it for you accordingly.
8) Constructor overloading is possible but overriding is not possible. Which means we can have overloaded constructor in our class but we can’t override a constructor.
9) Constructors can not be inherited.
10) If Super class doesn’t have a no-arg(default) constructor then compiler would not insert a default constructor in child class as it does in normal scenario.
11) Interfaces do not have constructors.
12) Abstract class can have constructor and it gets invoked when a class, which implements interface, is instantiated. (i.e. object creation of concrete class).
13) A constructor can also invoke another constructor of the same class – By using this(). If you want to invoke a parameterized constructor then do it like this: this(parameter list).

No comments: