Вступление
Java – одна из новых и востребованных технологий в текущем сценарии. Будучи самым безопасным и надежным и обладая огромными возможностями, он стал одним из самых востребованных.
Мы все знаем, что объекты играют решающую роль в Java и создаются с использованием начальных значений, предоставляемых двумя способами. Это утомительный подход, инициализирующий переменные объекта таким образом. Один из способов – использовать оператор dot для доступа к переменной экземпляра и присвоения им значений по отдельности. Другой способ – использование конструкторов – самый простой и наиболее предпочтительный способ присвоения значений переменным в Java.
Теперь давайте поговорим о конструкторах и их важности при присвоении значений переменным в Java.
Конструктор
Конструктор – это специальный процесс структуры или класса в объектно-ориентированном программировании , который инициализирует для нас объект этого типа. и может использоваться для определения значений элементов объекта, либо определяемых пользователем значений, либо по умолчанию. Конструктор это экземпляр методы и переменные обычно он имеет то же имя что и у класса,
- Правила конструктора:
a. Имя конструктора должно совпадать с именем класса. b. Конструктор не может иметь никакого возвращаемого типа, даже Void.
- Конструктор выполняется во время создания объекта.
- Конструктор может иметь n аргументов.
- Переменная, объявленная внутри конструктора, называется локальными переменными.
Конструктор можно разделить на 2 типа:
a. Конструктор по умолчанию. b. Пользователь определяет конструктор.
Пользовательский конструктор определения:
Конструктор, который создается пользователем, называется определяемым пользователем конструктором. Он также вызывается как явный конструктор. Его можно разделить на:
i) User define параметризованный конструктор: Если конструктор содержит какие-либо аргументы или если пользователь передает какое-либо значение внутри конструктора, вызывается user define параметризованный конструктор.
Экс:
демонстрация общедоступного класса { Демонстрация(строка s, int i)//Параметризованный конструктор { System.out.println(“значение I равно “+i+ “\значение S равно “+s);
} void display()//Метод { System.out.println(“Я нахожусь внутри метода отображения”); } public static void main(String[] args) { Demo Demo(“Rashda”,10); d.display(); } }
Запускайте свою программу от имени класса до тех пор, пока в окне вывода не появится следующее:
Выход:
значение I равно 10 Значение S равно Rashda Я нахожусь внутри метода отображения
ii) Пользователь определяет непараметризованный конструктор: Если конструктор не имеет никакого аргумента или если пользователь не передает никакого значения внутри конструктора, вызывается user define непараметризованный конструктор.
Экс:
демонстрация общедоступного класса { Демонстрация()//Непараметризованный конструктор { System.out.println(“Я внутри конструктора”); } void display()//Метод { System.out.println(“Я внутри метода отображения”); } public static void main(String[] args) { Demo Demo(); d.отображение(); } }
Затем программа перемещает непараметризованный конструктор к следующей строке кода
Выход:
Я нахожусь внутри конструктора, я нахожусь внутри метода отображения
Конструктор по умолчанию:
- Конструктор, который генерируется компилятором, называется конструктором по умолчанию.
- Конструктор по умолчанию не имеет никакой реализации (инструкции).
- У каждого КЛАССА есть конструктор по умолчанию.
- Конструктор по умолчанию также вызывается как неявный конструктор.
Экс:
- демонстрация публичного класса {
public static void main (String[] args) { Demo Demo(10); } } вывод: выдает ошибку во время компиляции, поскольку нет параметризованного конструктора, который присутствует внутри класса.
- образец публичного класса{ public static void main(String[] args) { Sample Sample(); } }
Теперь это приводит к ошибке времени компиляции, потому что нет параметризованного конструктора
Выход:
Нет ошибки во время компиляции В приведенной выше программе JVM выполнила конструктор по умолчанию, который генерируется компилятором.
Примечание:
- Если пользователь определяет какой-либо конструктор внутри класса, то компилятор не будет генерировать никакого конструктора по умолчанию.
- Если пользователь не определяет какой-либо конструктор внутри класса, то только компилятор будет генерировать конструктор по умолчанию.
- Конструктор создает объект и инициализирует состояние. Пример: Образец открытого класса { Образец(int i) { system.out.println(i); } общедоступный статический void main(Строка[] аргументы) { Образец образца(10); Образец образца(); } }
Вывод: выдает ошибку времени компиляции, поскольку в приведенном выше классе отсутствует конструктор по умолчанию.
Назначение конструктора:
- Создание объекта.
- Для инициализации состояний, то есть для инициализации значений локальных переменных в переменные экземпляра.
Примечание:
- Мы не можем получить доступ к значению локальной переменной вне метода и вне конструктора.
- Значение локальной переменной находится в области метода или в области конструктора.
- Конструктор не может вернуть никакого значения.
Экс:
ученик класса { Имя строки;
идентификатор int; Строковое имя колледжа; Студент(Строка n,int i,Строка c)//Конструктор { ; ; ; } void display() {System.out.println(“Name is “+name+”\n Id is “+ id + “\n название колледжа “+ название колледжа); } } пример открытого класса { public static void main(строка[] аргументы) { Студент Студент (“Джон”,1, “КИТ”); S1.дисплей(); Студент Студент (“Майк”,2, “КИТ”); S2.дисплей(); Студент Студент (“Адам”,3, “КИТ”); S3.дисплей(); } }
Введите “Имена”, “Идентификаторы”, “Названия колледжей”.
Выход:
Зовут Джон Идентификатор 1 колледж зовут КИТ Зовут Майк Я дис 2 название колледжа КИТ Имя Адам Идентификатор 3 название колледжа КИТ
Примечание:
Всякий раз, когда имя локальной переменной и переменной экземпляра совпадают, JVM будет путаться, чтобы идентифицировать локальную переменную и переменную экземпляра. Если мы хотим преодолеть эту проблему, мы должны использовать это ключевое слово. это ключевое слово, которое всегда ссылается на переменные экземпляра текущего класса.
Экс:
- ученик класса { Имя строки;
идентификатор int; Строковое имя колледжа; Студент(Строковое имя, идентификатор int, Строковое имя колледжа)//Конструктор { ; ; ; } void display() { System.out.println(“Name is “+name+”\n Id is “+ id + “\n название колледжа “+ collegename); } } пример открытого класса { public static void main(строка[] аргументы) { Студент Студент (“Джон”,1, “КИТ”); S1.дисплей(); Студент Студент (“Майк”,2, “КИТ”); S2.дисплей(); Студент Студент (“Адам”,3, “КИТ”); S3.дисплей(); } }
Ввод: Печать; ; ;”
вывод: Имя равно нулю Идентификатор равен 0 название колледжа равно нулю Имя равно нулю Идентификатор равен 0 название колледжа равно нулю Имя равно нулю Идентификатор равен 0 название колледжа равно Нулевой
Пример 2: класс Student { Строковое имя; идентификатор int; Строковое имя колледжа; Студент (Строковое имя, идентификатор int, Строковое имя колледжа)//Конструктор {
this.name ; ; ; } void display() { System.out.println(“Name is “+name+”\n Id is “+ id + “\n название колледжа “+ название колледжа); } } пример открытого класса { public static void main(строка[] аргументы) { Студент Студент (“Джон”,1, “КИТ”); S1.дисплей(); Студент Студент (“Майк”,2, “КИТ”); S2.дисплей(); Студент Студент (“Адам”,3, “КИТ”); S3.дисплей(); } }
Входные данные: Строковое имя; идентификатор int; Строковое имя колледжа;
Печать; ; ;”
Выход:
Зовут Джон Идентификатор 1 колледж зовут КИТ Зовут Майк Я дис 2 название колледжа КИТ Имя Адам Идентификатор 3 название колледжа КИТ
Строка .0 .0
Вывод:
Таким образом, конструкторы многое добавляют к удобству использования и удобочитаемости любого класса в Java. Было бы трудно тестировать классы с момента создания объекта без знания конструктора, и он работает.
В этой статье мы узнали о том, как конструкторы работают в Java и почему они необходимы. На самом деле, использование конструктора стало проще, поскольку вы можете использовать внедрение зависимостей для инициализации класса. При работе с открытыми исходными кодами, такими как Google Guice и Spring framework, станет легко использовать и тестировать эти классы с помощью соответствующих конструкторов.
Оригинал: “https://dev.to/manojyarramsetti5/a-brief-view-of-java-constructors-3ah2”