Конструкторы и блоки инициализации
Конструктор — это именованный блок кода, отвечающий за инициализацию объекта. Он носит имя класса и является специальным методом. Он может иметь параметры, а следовательно, эти параметры необходимо указывать в скобках при создании объекта. Пример простого конструктора.
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"); } }
Листинги не отображаются
Спасибо, поправили