English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
АКонструкцияИспользуется для инициализации объекта при создании. С точки зрения синтаксиса, он подобен методу. Разница заключается в том, что имя конструктора совпадает с именем класса, и у него нет типа возвращаемого значения.
Конструкторы не требуют явного вызова, они автоматически вызываются при инстанцировании.
public class Example { public Example(){ System.out.println("Это конструктор класса example"); } public static void main(String args[]) { Example obj = new Example(); } }
Результат вывода
Это конструктор класса example
Да, как и методы, вы можете выбрасывать исключения из конструктора. Однако, если вы это делаете, вам нужно будет перехватывать/выбрасывать (обрабатывать) исключение в методе, который вызывает конструктор. Если вы не скомпилируете, то возникнет ошибка.
В следующем примере у нас есть класс Employee,构造函数 которого выбрасывает IOException, и мы создаем объект этого класса без обработки исключения. Таким образом, если вы скомпилируете этот程序, он будет генерировать ошибку компиляции.
import java.io.File; import java.io.FileWriter; import java.io.IOException; class Employee{ private String name; private int age; File empFile; Employee(String name, int age, String empFile) throws IOException{ this.name = name; this.age = age; this.empFile = new File(empFile); new FileWriter(empFile).write("Имя сотрудника ― " + name + " и возраст ― " + age); } public void display(){ System.out.println("Имя: " + name); System.out.println("Возраст: " + age); } } public class ConstructorExample { public static void main(String args[]) { String filePath = "samplefile.txt"; Employee emp = new Employee("Krishna", 25, filePath); } }
ConstructorExample.java:23: ошибка: неоповещенная исключительная ситуация IOException; она должна быть перехвачена или объявлена в качестве выбрасываемой Employee emp = new Employee("Krishna", 25, filePath); ^ 1 ошибка
Чтобы сделать программу рабочей,.wrap instance line in try-catch или вызовите исключение.
import java.io.File; import java.io.FileWriter; import java.io.IOException; class Employee{ private String name; private int age; File empFile; Employee(String name, int age, String empFile) throws IOException{ this.name = name; this.age = age; this.empFile = new File(empFile); new FileWriter(empFile).write("Имя сотрудника ― " + name + " и возраст ― " + age); } public void display(){ System.out.println("Имя: " + name); System.out.println("Возраст: " + age); } } public class ConstructorExample { public static void main(String args[]) { String filePath = "samplefile.txt"; Employee emp = null; try { emp = new Employee("Krishna", 25, filePath); catch(IOException ex) { System.out.println("Не найден указанный файл"); } emp.display(); } }
Результат вывода
Имя: Krishna Возраст: 25