Java. Урок 20. Конструктор

Самой важной функцией в любом классе является конструктор. Он позволяет создавать экземпляр объекта. Если у вас нет конструктора, то создается конструктор по умолчанию:

1
2
3
4
5
6
7
8
public class User {
    int age;//поле
    String firstName;//поле
    String lastName;//поле
    User() {//вот так выглядит конструктор по умолчанию
        //пусто
    }
}

Как вы могли заметить конструктор имеет тоже имя, что и название класса.
Конструкторы, как и функции могут принимать на вход некоторый набор параметров, которые они в дальнейшем используют при создании объекта.

1
2
3
4
5
6
7
8
9
10
public class User {
    int age;//поле
    String firstName;//поле
    String lastName;//поле
    public User(int age, String firstName, String lastName) {//конструктор с тремя параметрами
        this.age = age;
        this.firstName = firstName;
        this.lastName = lastName;
    }
}

Очевидно, что конструкторы вызываются в момент создания объекта:

1
User user = new User(18,"Bendjamin","Button");

Таким образом, мы создали объект класса User, поле Age, которого содержит значения 18, firstName Bendjamin, а lastName Button.
Использование данного конструктора намного удобнее, чем если бы мы пытались сделать это в ручную:

1
2
3
4
User user = new User();
user.age = 18;
user.firstName = "Bendjamin";
user.lastName = "Button";

Кроме этого, если вы используете какие — то конструкторы, то конструктор по умолчанию не создается. Таким образом, если у нас есть только конструктор от трех параметров, то мы никак не можем создать объект данного класса не вызвав его:

1
User user = new User();//ошибка, конструктор по умолчанию отсутствует

Перейдем к некоторым плюшкам intellij idea. Нажмем alt+insert:
alt-insert-java
Это меню автоматической генерации некоторых полезных вещей для класса. Нас здесь сегодня интересует пункт Constructor. Теперь если у вас в классе есть поля, то можно выбрать от каких полей нужно создать конструктор и среда программирования сама за вас напишет его код. Если вам нужен еще один конструктор, то опять нажмите заветные кнопочки и добавьте еще один:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class User {
    int age;//поле
    String firstName;//поле
    String lastName;//поле
    public User(int age, String firstName, String lastName) {
        this.age = age;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public User(int age) {
        this.age = age;
    }
}

Теперь рассмотрим странную строчку this.названиеПеременной = названиеПеременной. Ключевое слово this показывает, что необходимо текущему экземпляру класса присвоить значение, переданное в конструктор. Таким образом, если мы бы писали вне класса, то user.age = age, где age это обычная переменная.
Внутри конструкторов можно вызывать другие конструкторы, например:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class User {
    int age;//поле
    String firstName;//поле
    String lastName;//поле

    public User(int age, String firstName, String lastName) {
        this.age = age;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public User(int age) {
        this(age,"unknown""unknown");//вызываю конструктор от трех параметров
    }
}

[note]Кроме того, если в вашем классе использовалось наследование, то для того, чтобы вызвать конструктор родителя необходимо применять ключевое слово super[/note]
Конструкторы нужны для начальной настройки объекта, если необходимо произвести какие — то действия с полями, например проинициализировать их.

Категория: Java | Добавил: ghost_mod (29.09.2016)
Просмотров: 414 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Подписка:1
Код *: