Вот есть у меня абстрактный класс Figure, от него наследуются Triangle и Circle:
abstract class Figure {
public abstract boolean isTheSame(Figure figure);
}
class Triangle extends Figure {
int value;
Triangle(int value) {
this.value = value;
}
// ??? boolean isTheSame(Figure figure) {}
}
class Circle extends Figure {
int value;
Circle(int value) {
this.value = value;
}
// ??? boolean isTheSame(Figure figure) {}
}
Метод isTheSame пускай будет сравнивать фигуры по значению value. Как мне реализовать метод isTheSame в классах Triangle и Circle? На вход ведь приходит объект типа Figure, а этот объект ничего не знает о свойстве value? Как в таком случае сравнить 2 фигуры? Заранее благодарен.
а почему value объявлено в каждом наследнике отдельно? Возможны наследники без этого поля?
В наследниках разный набор параметров, по которым надо их сравнивать, value только для примера.
Приведение типо сделай
ок @Override boolean isTheSame(Figure figure){ if (figure instanceof Triangle triangle){ // на более старых java после проверки надо явное приведение типа ... } else return false; }
Это да, здорово, но надо у объекта типа figure потом всё равно как-то достучаться до свойства value, как это сделать?
Обсуждают сегодня