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