#java #interface #comparable
Вопрос:
public abstract class Shape {
protected int height;
protected int width;
public Shape(int height, int width) {
this.height = height;
this.width = width;
}
public final void printArea() {
System.out.println("This " getName() " has a height of "
height ", a width of " width ", and an area of "
getArea() ".");
}
public final void printPerimeter() {
System.out.println("This " getName() " has a height of "
height ", a width of " width ", and a perimeter of "
getPerimeter() ".");
}
protected abstract String getName();
protected abstract double getArea();
protected abstract double getPerimeter();
}
}
Это мой исходный код, у меня есть три других класса Rectangle, RightTriangle и Square, все с кодом, но я сначала сосредоточусь на своем классе формы, мне нужно реализовать сопоставимый интерфейс, сопоставимый. Затем, потому что метод get области переопределяется в каждом дочернем классе. Я могу написать один метод compareTo() в классе Shape, который будет корректно работать при сравнении любого типа объекта формы или подкласса с любым другим. Мне нужно реализовать метод compareTo (). Итак, публичное сравнение(формы) правильно? Теперь код для сравнения int k = getName().compareTo(s.getName()); . Мне нужно переопределить метод toString (), унаследованный от объекта в классе Shape, и заставить его возвращать строку, содержащую имя текущего объекта и его область в следующем формате:
название: область
Мне просто нужно какое-то руководство
Ответ №1:
int compareTo(Shape shape) {
return getArea() - shape.getArea();
}
это позволит вам сравнить формы, и метод вернет
Комментарии:
1.
@Override
иpublic
илиprotected
отсутствуют. Может быть, тоже подумайте о проверке на нуль.