заранее спасибо за ваши ответы.Я мог бы не обладать всеми необходимыми знаниями, чтобы правильно сформулировать вопрос, но здесь он звучит так: у меня есть несколько классов, расширяющих суперкласс Shape (Circle, Rectangle, Point).У меня есть статический класс Geometry с методом, который проверяет пересечение между различными формами (круги, прямоугольники, треугольники).В статическом классе «Геометрия» я реализовал метод «пересечения», чтобы принимать любую комбинацию фигур
public static boolean intersects(Rectangle rect, Point point) {
return rectIntersectsPoint(rect, point);
}
public static boolean intersects(Circle circle, Point point) {
return circleIntersectsPoint(circle, point);
}
public static boolean intersects(Circle circle, Rectangle rect) {
return circleIntersectsRect(circle, rect);
}
И еще кучу для каждого случая.Теперь в моей программе есть метод, который должен проверять пересечение и принимать любой подкласс Shape:
List<Point> query(Shape shape) {
if (Geo.intersects(this.b, shape)) {
return this.found;
}
......
}
И я использую его так:
Rectangle rect = new Rectangle(10, 10, 200, 300);
found = qt.query(rect );
Но яполучить сообщение об ошибке «Функция пересекается, ожидает параметры, такие как (Rectangle, Circle)».
Итак, я передаю объект Rectangle методу query (), и все идет хорошо, потому что я могу принять любой подкласс«Форма».Но когда я использую его в методе, он не сохраняет тип «Rectangle» и становится объектом «Shape».
Я думал о том, чтобы иметь метод запроса для каждого подкласса, но таким образом у меня будетодин и тот же код снова и снова.