Автор оригинала: Waseem.
Java-один из многих языков программирования, который следует объектно-ориентированному подходу. Это означает, что при программировании на Java у нас есть все мощные функции абстракции данных, полиморфизма, наследования и т.д. Ядром всех функций ООП является реализация классов и объектов и их взаимодействие друг с другом. В этой статье мы, в частности, рассмотрим, как инициализировать объект с помощью параметризованных конструкторов в Java.
Что Такое Конструктор?
Конструктор-это в основном метод, который автоматически вызывается при создании объекта(экземпляра) этого класса. Он используется для инициализации элементов данных объекта.
public class Edureka{ Edureka(){ System.out.println("constructor is made");} }
Некоторые функции конструктора включают в себя:
- Он имеет то же имя, что и имя класса
- Он не имеет возвращаемого типа
Типы Конструктора
- Конструктор по умолчанию
- Параметризованный Конструктор
Конструктор по умолчанию против параметризованного конструктора
Конструктор по умолчанию – Конструктор, который не принимает никаких параметров, называется Конструктором по умолчанию. Нет необходимости иметь блок конструктора в определении класса. Если вы явно не напишете конструктор, компилятор автоматически вставит его для вас.
Пример, иллюстрирующий конструктор по умолчанию в Java:
public class Edureka{ Edureka() { System.out.println("I am a constructor");} public static void main(String args[]){ Edureka obj = new Edureka(); } }
Output: I am a constructor
Параметризованный конструктор – Конструктор называется Параметризованным конструктором, когда он принимает определенное количество параметров. Для инициализации элементов данных класса с различными значениями.
Пример, иллюстрирующий параметризованный конструктор:
public class Edureka{ String studentName; int studentAge; //constructor Edureka(String name, int age){ studentName = name; studentAge = age; } void display(){ System.out.println(studentName+ " "+studentAge); } public static void main(String args[]) { Edureka myObj = new Edureka("Manan" , 19); myObj.display(); } }
Output: Manan-19
В приведенном выше примере мы передаем объекту строку и целое число. Затем конструктор инициализирует имя учащегося и возраст учащегося, используя переданные значения. Затем метод отображения выдает желаемый результат.
С параметризованным конструктором для класса необходимо указать начальные значения в качестве аргументов, в противном случае компилятор сообщает об ошибке.
Передача Объектов В Качестве Аргументов
Мы также можем передавать аргументы при создании других экземпляров класса. Таким образом, параметризованные конструкторы удовлетворяют потребность в копировании значений одного объекта в другой.
Пример, иллюстрирующий передачу объектов в качестве аргументов:
public class Edureka{ String studentName; Edureka(String name){ studentName = name; } Edureka(Edureka myObj){ this.studentName = myObj.studentName; } void display(){ System.out.println("Student:" + studentName); } public static void main(String args[]) { Edureka obj1 = new Edureka("Manan"); /* passing the object as an argument for the constructor * this will invoke the copy constructor */ Edureka obj2 = new Edureka(obj1); System.out.println("Printing obj1 - "); obj1.display(); System.out.println("Printing obj2 - "); obj2.display(); } }
Output:
Printing object 1 - MananPrinting object 2 - Manan
В приведенном выше примере мы инициализируем obj1 с помощью строки. Затем мы передаем obj1 в качестве аргумента при создании obj2. Наконец, когда мы печатаем переменную имени студента обоих объектов с помощью функции отображения, мы получаем “Много”.
Вызов Конструктора По Умолчанию Из Параметризованного Конструктора в Java
Иногда возникает необходимость вызвать конструктор по умолчанию из другого конструктора того же класса. это ключевое слово выполняет эту цель.
Пример, иллюстрирующий вызов конструктора по умолчанию из параметризованного конструктора:
public class Edureka{ String studentName; int studentAge; String member; Edureka(){ member = "YES"; } Edureka(String name , int age){ this(); /* this is used for calling the default constructor *from parameterized constructor */ studentName = name; studentAge = age; } void display(){ System.out.println(studentName + " -" + studentAge+ "-"+ "Member" + member); } public static void main(String args[]) { Edureka obj = new Edureka("Manan" , 21); obj.display(); } }
Вывод: Манан – 21 – Член ДА
В приведенном выше примере при вызове параметризованного конструктора он сначала вызывает конструктор по умолчанию с помощью ключевого слова this (). Конструктор по умолчанию инициализирует переменную “член” на “ДА”, а затем продолжает выполнять параметризованный конструктор.
Перегрузка Конструктора
Конструктор поддерживает перегрузку методов так же, как и любой другой класс. На основе разных типов или количества аргументов будут вызываться разные конструкторы.
Пример, иллюстрирующий перегрузку конструктора:
public class Rectangle{ int length; int breadth; String color; //constructor 1 Rectangle( int l , int b){ length = l; breadth = b; color = "Green"; } //constructor 2 Rectangle(int l, int b, String c){ length = l; breadth = b; color = c; } void display(){ System.out.println("Length-" + length + "Breadth-" + breadth+ "Color" + color); } public static void main(String args[]){ Rectangle obj1 = new Rectangle(2,4); Rectangle obj2 = new Rectangle(2,4,"Green"); obj1.display(); obj2.display(); } }
Output: Length - 2 Breadth - 4 Color - GreenLength - 2 Breadth - 4 Color - Red
У вас есть к нам вопрос? пожалуйста, упомяните об этом в разделе комментариев этой статьи “Параметризованный конструктор в Java”, и мы свяжемся с вами как можно скорее.
Оригинал: “https://www.codementor.io/@waseem599/parameterized-constructor-in-java-java-contsructor-examples-wk0g8a3bq”