Конструкторы используются каждый раз для инициализации переменных экземпляра. Существуют некоторые дополнительные правила, связанные с конструкторами, которые часто задают на собеседованиях. Следовательно, пересматриваю их здесь через сообщение в блоге.
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”