Конструктор с параметрами и ключевое слово this.
Скачать исходники для статьи можно ниже
Конструктор с параметрами.
В следующем примере объекты класса Box определяет конструктор с параметрами, который устанавливает размеры параллелепипеда в соответствии со значениями этих параметров. Обратите особое внимание на способ создания объектов класса Box.
class Box { double width; double height; double depth; // Это конструктор класса Box. Box(double w, double h, double d) { width = w; height = h; depth = d; } // вычисление и возврат объема double volume() { return width * height * depth; } } class BoxDemo1 { public static void main(String args[]) { // объявление, резервирование и инициализация объектов Box Box myboxl = new Box(10, 20, 15); Box mybox2 = new Box(3, 6, 9); double vol; // получение объема первого параллелепипеда vol = myboxl.volume(); System.out.printIn("Объем равен " + vol); // получение объема второго параллелепипеда vol = mybox2.volume(); System.out.println("Объем равен " + vol); } }
Вывод этой программы имеет следующий вид:
Объем равен 3000.0
Объем равен 162.0
Как видите, инициализация каждого объекта выполняется в соответствии со значениями, указанными в параметрах его конструктора. Например, в строке:
Box myboxl = new Box(10, 20, 15);
значения 10, 20 и 15 передаются конструктору Box() при создании объекта с использованием оператора new. Таким образом, копии переменных width, height и depth будут содержать соответственно значения 10, 20 и 15.
Ключевое слово this.
Иногда необходимо, чтобы метод ссылался на вызвавший его объект. Чтобы
это было возможно, в Java определено ключевое слово this. Оно может
использоваться внутри любого метода для ссылки на текущий объект. То есть this всегда служит ссылкой на объект, для которого был вызван метод.
Ключевое слово this можно использовать везде, где допускается ссылка на объект типа текущего класса. Для пояснения рассмотрим следующую версию конструктора Box().
// Избыточное применение ключевого слова this. Box(double w, double h, double d) { this.width = w; this.height = h; this.depth = d; }
Эта версия конструктора Box() действует точно так же, как предыдущая.
Применение ключевого слова this избыточно, но совершенно правильно. Внутри метода Box() ключевое слово this всегда будет ссылаться на вызывающий объект.
Хотя в данном случае это и излишне, в других случаях, один из которых рассмотрен в следующем примере, ключевое слово this весьма полезно.
Box(double width, double height, double depth) { this.width = width; this.height = height; this.depth = depth; }