Конструкторы и блоки инициализации

Конструкторы и блоки инициализации

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

Trees () 
{
Number = ++nubmers; 
}

 

Используя этот конструктор, можно убрать метод setNumbers. Конструкторов может быть несколько, однако они должны отличаться типами параметров и их количеством. Приведем простой пример класса с несколькими конструкторами (листинг 4.3).

 

Листинг 4.3.
Пример класса с использованием нескольких конструкторов

public class Toys {
    String size;
    String color;
    static int numbers = 0;
    int number;

    // Первый конструктор
    Toys() {
         number = ++numbers;
    }
    
    // Второй конструктор
    Toys(String s) {
        number = ++numbers;
        size = s;
    }
    
    // Третий конструктор
    Toys(String s1, String s2) {
        number = ++numbers;
        size = s1;
        color = s2;
    }

    public static void main(String[] args) {
        Toys ball = new Toys(); // Использование первого конструктора
        ball.size = "small";
        ball.color = "red";
        
        Toys car = new Toys("big"); // Использование вторго конструктора
        car.color = "green";
        
        Toys horse = new Toys("little", "brown"); // Использование третьего конструктора
    }
    
}

Можно в объявлении класса помещать так называемые блоки инициализации. Блок инициализации будет выполняться при создании объекта. Он располагается между фигурными скобками, например класс с блоком инициализации.

public class MyString {
    static int numbers = 0;
    String NameString;
    { // Блок инициализации
        NameString = "String " + String.valueOf(++numbers);
    }
}

Существуют также блоки статической инициализации, отличающиеся от блоков инициализации тем, что перед открывающейся фигурной скобкой стоит модификатор static (статическая инициализация предусматривает обращение только к статическим элементам этого класса).

 

Ссылка this

Иногда необходимо использовать в теле метода ссылку на объект, который его вызывает. Для этого существует специальная ссылка this. В листинге 4.4 приведен пример использования этой ссылки.

 

Листинг 4.4.
Пример использования ссылки this

import java.awt.print.Book;

public class Books {
    String author;
    String nameBook;
    int number;
    static int numbers = 0;

    Books() {
        number = ++numbers;
    }

    Books(String author, String nameBook) {
        this(); // Вызов первого конструктора
        this.author = author;
        /* Значением свойства author объекта, вызвавшего этот метод, становится значение переменной author,
        * которая является параметром данного конструктора и получает значение при вызове*/
        this.nameBook = nameBook;
    }

    public static void main(String[] args) {
        Books myLikeBook = new Books();
        myLikeBook.author = "Герберт Шилдт";
        myLikeBook.nameBook = "Java. Полное руководство";
        Books myBook = new Books("Bruce Eckel", "Thinking in Java");
    }
}

< Предыдущая       Оглавление       Следующая >

Комментарии: 3
  1. Сергей

    Листинги не отображаются

    1. admin (автор)

      Спасибо, поправили

Добавить комментарий