Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Освоение конструкторов Java: типы, использование и практические примеры

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

В этом уроке мы изучим конструкторы Java, их типы и использование на примерах.

Что такое конструктор?

Конструктор в Java похож на метод, который вызывается при создании объекта класса.

В отличие от методов Java, конструктор имеет то же имя, что и класс, и не имеет возвращаемого типа. Например,

class Test {
    Test() {
        // тело конструктора
    }
}

Здесь Test() — конструктор. Он имеет то же имя, что и класс, и не имеет типа возврата.

Рекомендуемое чтение: Почему конструкторы не возвращают значений


Пример 1: Конструктор в Java

class Main {
    private String name;
    // конструктор
    Main() {
        System.out.println("Конструктор вызван:");
        name = "Programiz";
    }
    public static void main(String[] args) {
        // конструктор вызывается при
        // создании объекта класса Main
        Main obj = new Main();
        System.out.println("Имя: " + obj.name);
    }
}

Вывод:

Конструктор вызван:
Имя: Programiz

В примере создан конструктор Main(). Внутри конструктора инициализируется значение переменной name.

Обратите внимание на оператор создания объекта класса Main.

Main obj = new Main();

Здесь при создании объекта вызывается конструктор Main(), и значение name инициализируется.

Поэтому программа выводит значение name как Programiz.


Типы конструкторов

В Java конструкторы делятся на 3 типа:

  1. Конструктор без аргументов (No-Arg)
  2. Параметризованный конструктор
  3. Конструктор по умолчанию (Default)

1. Конструкторы без аргументов в Java

Как и методы, конструктор может иметь параметры или не иметь их.

Если конструктор не принимает параметров, он называется конструктором без аргументов. Например,

private Constructor() {
    // тело конструктора
}

Пример 2: Приватный конструктор без аргументов

class Main {
    int i;
    // конструктор без параметров
    private Main() {
        i = 5;
        System.out.println("Конструктор вызван");
    }
    public static void main(String[] args) {
        // вызов конструктора без параметров
        Main obj = new Main();
        System.out.println("Значение i: " + obj.i);
    }
}

Вывод:

Конструктор вызван
Значение i: 5

В примере создан конструктор Main() без параметров. Следовательно, это no-arg конструктор.

Обратите внимание: конструктор объявлен как private.

Когда конструктор объявлен private, он недоступен извне класса. Создание объектов извне класса запрещено приватным конструктором.

Здесь мы создаем объект внутри того же класса. Поэтому программа имеет доступ к конструктору. Подробнее: Реализация приватного конструктора в Java.

Однако, если нужно создавать объекты извне класса, конструктор должен быть public.

Пример 3: Публичный конструктор без аргументов

class Company {
    String name;
    // публичный конструктор
    public Company() {
        name = "Programiz";
    }
}
class Main {
    public static void main(String[] args) {
        // объект создается в другом классе
        Company obj = new Company();
        System.out.println("Название компании = " + obj.name);
    }
}

Вывод:

Название компании = Programiz

Рекомендуемое чтение: Модификаторы доступа в Java


2. Параметризованный конструктор в Java

Конструктор Java может принимать один или более параметров. Такие конструкторы называются параметризованными (конструктор с параметрами).

Пример 4: Параметризованный конструктор

class Main {
    String languages;
    // конструктор, принимающий одно значение
    Main(String lang) {
        languages = lang;
        System.out.println(languages + " Programming Language");
    }
    public static void main(String[] args) {
        // вызов конструктора с передачей значения
        Main obj1 = new Main("Java");
        Main obj2 = new Main("Python");
        Main obj3 = new Main("C");
    }
}

Вывод:

Java Programming Language
Python Programming Language
C Programming Language

В примере создан конструктор Main(), принимающий один параметр. Обратите внимание на выражение,

Main obj1 = new Main("Java");

Здесь мы передаем единственное значение конструктору. На основе переданного аргумента переменная languages инициализируется внутри конструктора.


3. Конструктор по умолчанию в Java

Если мы не создаем никаких конструкторов, Java-компилятор автоматически создает конструктор без аргументов во время выполнения программы. Этот конструктор называется конструктором по умолчанию.

Пример 5: Конструктор по умолчанию

class Main {
    int a;
    boolean b;
    public static void main(String[] args) {
        // вызывается конструктор по умолчанию
        Main obj = new Main();
        System.out.println("Значения по умолчанию:");
        System.out.println("a = " + obj.a);
        System.out.println("b = " + obj.b);
    }
}

Вывод:

a = 0
b = false

Здесь мы не создавали конструкторов. Поэтому компилятор автоматически создал конструктор по умолчанию.

Конструктор по умолчанию инициализирует неинициализированные переменные экземпляра значениями по умолчанию.

ТипЗначение по умолчанию
booleanfalse
byte0
short0
int0
long0L
char\u0000
float0.0f
double0.0d
objectnull

В программе переменные a и b инициализированы значениями по умолчанию 0 и false соответственно.

Программа эквивалентна:

class Main {
    int a;
    boolean b;
    // приватный конструктор
    private Main() {
        a = 0;
        b = false;
    }
    public static void main(String[] args) {
        // вызов конструктора
        Main obj = new Main();
        System.out.println("Значения по умолчанию:");
        System.out.println("a = " + obj.a);
        System.out.println("b = " + obj.b);
    }
}

Результат программы тот же, что и в Примере 5.


Важные замечания о конструкторах Java


Перегрузка конструкторов в Java

Как и перегрузка методов, можно создать два или более конструкторов с разными параметрами. Это называется перегрузкой конструкторов.

Пример 6: Перегрузка конструкторов в Java

class Main {
    String language;
    // конструктор без параметров
    Main() {
        this.language = "Java";
    }
    // конструктор с одним параметром
    Main(String language) {
        this.language = language;
    }
    public void getName() {
        System.out.println("Programming Language: " + this.language);
    }
    public static void main(String[] args) {
        // вызов конструктора без параметров
        Main obj1 = new Main();
        // вызов конструктора с параметром
        Main obj2 = new Main("Python");
        obj1.getName();
        obj2.getName();
    }
}

Вывод:

Programming Language: Java
Programming Language: Python

В примере два конструктора: Main() и Main(String language). Оба инициализируют переменную language разными значениями.

В зависимости от параметра, переданного при создании объекта, вызываются разные конструкторы и присваиваются разные значения.

Также возможно вызывать один конструктор из другого. Подробнее: Вызов одного конструктора из другого в Java.

Примечание: Мы использовали ключевое слово this для указания переменной класса. Подробнее о this: Ключевое слово this в Java.

java

  1. Понимание конструкторов в C++: конструкторы по умолчанию, параметризованные и копирования
  2. Освоение операторов Java: типы, синтаксис и практические примеры
  3. Комментарии в Java: типы, использование и лучшие практики
  4. Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
  5. Освоение конструкторов Java: типы, использование и практические примеры
  6. Освоение строк в Java: создание, методы и лучшие практики
  7. Ключевое слово this в Java: практическое применение, конструкторы и примеры
  8. Интерфейсы в Java: концепции, реализация и лучшие практики
  9. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  10. Конструкторы в Java Enums: объяснение с практическим примером