Программирование на языке Java

         

This в конструкторах



this в конструкторах

Очередной вариант класса Point показывает, как, используя this и совмещение методов, можно строить одни конструкторы на основе других. class Point { int х, у; Point(int х, int у) { this.x = х; this.у = у; } Point() { this(-1, -1); } }

В этом примере второй конструктор для завершения инициализации объекта обращается к первому конструктору.

Методы, использующие совмещение имен, не обязательно должны быть конструкторами. В следующем примере в класс Point добавлены два метода distance. Функция distance возвращает расстояние между двумя точками. Одному из совмещенных методов в качестве параметров передаются координаты точки х и у, другому же эта информация передается в виде параметра-объекта Point. class Point { int х, у; Point(int х, int у) { this.x = х; this. y = y; } double distance(int х, int у) { int dx = this.x - х; int dy = this.у - у; return Math.sqrt(dx*dx + dy*dy); } double distance(Point p) { return distance(p.x, p.y); } } class PointDist { public static void main(String args[]) { Point p1 = new Point(0, 0); Point p2 = new Point(30, 40); System.out.println("p1 = " + pi.x + ", " + p1.y); System.out.println("p2 = " + p2.x + ", " + p2.y); System.out.println("p1.distance(p2) = " + p1.distance(p2)); System.out.println("p1.distance(60, 80) = " + p1.distance(60, 80)); } }

Обратите внимание на то как во второй фороме метода distance для получения результата вызывается его первая форма. Ниже приведен результат работы этой программы: С:\> java PointDist р1 = 0, 0 р2 = 30, 40 р1.distance(p2) = 50.0 p1.distance(60, 80) = 100.0



Содержание раздела