Рубрики
Без рубрики

Конструкторы в Java

Конструкторы используются каждый раз для инициализации переменных экземпляра. Есть несколько дополнительных правил… С пометкой java, обсуждение, программирование, интервью.

Конструкторы используются каждый раз для инициализации переменных экземпляра. Существуют некоторые дополнительные правила, связанные с конструкторами, которые часто задают на собеседованиях. Следовательно, пересматриваю их здесь через сообщение в блоге.

1.Конструктор используется для инициализации переменных экземпляра.

2.Когда создается объект класса, JVM переходит к классу и ищет соответствующий конструктор.

Если конструктор ОТСУТСТВУЕТ, это выдает ошибку компиляции.

3.By по умолчанию у каждого класса есть конструктор с именем default конструктор без аргументов

class A{
A(){ //default no arg constructor 
}}

4.Программист может иметь несколько конструкторов в классе при условии, что их сигнатуры различны. Это называется перегрузкой конструктора.

class A{
A(){
//some code
}

A(int x){
//some code
}

A(float x){
//some code
}

A(float x,int y){
//some code
}
A(int x,float y){
}
A(int z){}//THIS WILL GIVE COMPILE ERROR SInce its already defined on top.

}

A a=new A();
new A();//goes to first matching constructor

5.JVM всегда вызывает соответствующий конструктор из класса. ОДНАКО программист может вызывать другие конструкторы этого класса с помощью функции this() метод

class A{
A(){
System.out.println("A");    //I 
A(int x){
this();                     //this will go to constructor A();
System.out.println("AA");   //II
}
}
class App{
public static void main(String[]args){
new A(5);
}}

OUTPUT:
A
AA

6.При желании программист может вызвать конструктор суперкласса также из своего собственного конструктора, используя метод super().

class A{
A(){
System.out.println("A");    //I 
}
}
class B extends A{
B(){
super();             //this is called implicitly refer next point also 
System.out.println("B");
}}


class HelloWorld {
    public static void main(String[] args) {
        new B();
    }
}
OUTPUT:
A
B

7.Всякий раз, когда программист создает конструктор, JVM неявно записывает super() в каждый конструктор в качестве своей первой строки.

Примечание: Если класс не расширяет какой-либо класс, он по умолчанию расширяет класс объекта. Попробуйте этот код в вашей ide, чтобы убедиться в этом сами

class A{
A(){
//super will be called implicitly at the first line of this constructor and here since it does not extend any class it will extend the Object class
System.out.println("A");    //I 
}

A(int x){
//super will be called implicitly at the first line of this constructor 
System.out.println("AA");
}}


class HelloWorld {
    public static void main(String[] args) {
        new A(5);
    }
}
OUTPUT:
A
AA

Это все для конструкторов в Java. Если в содержании есть какая-либо ошибка или что-то еще, не стесняйтесь, дайте мне знать в разделе комментариев.

Счастливого Обучения:)

Оригинал: “https://dev.to/shwetarkadam/constructors-in-java-46n3”