Книга: Основы программирования на Java
7.11. Замещение методов
7.11. Замещение методов
Новый подкласс Point3D класса Point наследует реализацию метода distance своего суперкласса. Проблема заключается в том, что в классе Point уже определена версия метода distance(int х, int у), которая возвращает обычное расстояние между точками на плоскости. Мы должны заместить (override) это определение метода новым, пригодным для случая трехмерного пространства. В следующем примере проиллюстрировано и совмещение (overloading), и замещение (overriding) метода distance.
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 Point3D extends Point {
int z;
Point3D(int x, int y, int z) {
super(x, y);
this.z = z;
}
double distance(int x, int y, int z) {
int dx = this.x - x;
int dy = this.y - y;
int dz = this.z - z;
return Math.sqrt(dx*dx + dy*dy + dz*dz);
}
double distance(Point3D other) {
return distance(other.x, other.y, other.z);
}
double distance(int x, int y) {
double dx = (this.x / z) - x; double dy = (this.y / z) - y;
return Math.sqrt(dx*dx + dy*dy);
}
}
class Point3DDist {
public static void main(String args[]) {
Point3D p1 = new Point3D(30,40,10);
Point3D p2 = new Point3D(0,0,0);
Point p = new Point(4,6);
System.out.println("p1 = " + p1.x + "," + p1.y + " + p1.z);
System.out.println("p2 = " + p2.x + ", " + p2.y + " + p2.z);
System.out.println("p = " + p.x + " + p.y);
System.out.println("p1.distance(p2) =” +p1.distance(p2));
System.out.println("p1.distance(4,6) = " + p1.distance(4,6));
System.out.println("p1.distance(p) =” + p1.distance(p));
}
}
Результат работы этой программы:
p1 =30,40,10
р2 = 0,0,0
р = 4,6
p1.distance(p2) = 50.9902
pl.distance(4,6) = 2.23607
p1.distance(p) = 2.23607
- 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. Абстрактные классы
- 7.12. Динамическое назначение методов
- 7.7. Совмещение методов
- Множественные интерфейсы и имена методов
- Перегрузка методов с несколькими параметрами типа
- Параметры методов
- Обзор методов асинхронного ввода
- 3. Узкий диапазон методов конкурентного взаимодействия
- Замещение страниц
- Обзор методов управления памятью
- Выбор методов лидгена
- Выбор инструментальных средств моделирования и методов
- 7.2. Классификация IPC-методов в Unix