Книга: Основы программирования на Java
7.8. Ссылка this
7.8. Ссылка this
Очередной вариант класса Point показывает, как, используя this и совмещение методов, можно строить одни конструкторы на основе других.
class Point {
int х, у;
Point(int х, int у) {
this.x = x;
this.y = y;
}
Point() {
this(-l,-l);
}
}
В этом примере второй конструктор для завершения инициализации объекта обращается к первому конструктору.
Методы, использующие совмещение имен, не обязательно должны быть конструкторами. В следующем примере в класс Point добавлены два метода distance. Функция distance возвращает расстояние между двумя точками. Одному из совмещенных методов в качестве параметров передаются координаты точки х и у, другому же эта информация передается в виде параметра-объекта Point.
class Point {
int x, у;
Point(int x, int у) {
this.x = x;
this. y = y;
}
double distance(int x, int y) {
int dx = this.x - x;
int dy = this.y - y;
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 = " + p1.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) = " + pl.distance(60, 80));
}}
Обратите внимание на то, как во второй форме метода distance для получения результата вызывается его первая форма. Ниже приведен результат работы этой программы:
p1 = 0,0
р2 = 30,40
p1.distance(p2) = 50.0
pl.distance(60, 80) = 100.0
- 7.1. Переменные класса
- 7.2. Оператор new
- 7.3. Объявление методов
- 7.4. Вызов метода
- 7.5. Скрытие переменных
- 7.6. Конструкторы
- 7.7. Совмещение методов
- 7.8. Ссылка this
- 7.9. Наследование
- 7.10. Ссылка super
- 7.11. Замещение методов
- 7.12. Динамическое назначение методов
- 7.13. Директива final
- 7.14. Деструкторы
- 7.15. Статические методы
- 7.16. Абстрактные классы
- Скрытая ссылка this
- 7.10. Ссылка super
- this
- Conventions used in this document
- Why this document was written
- Terms used in this document
- 10. FUTURE REVISIONS OF THIS LICENSE
- How to use this License for your documents
- 4.1.5. Права доступа к ссылкам
- 10.7.3. Рассылка файлов
- What This Book Is Not
- Прямая почтовая рассылка