Мне нужно сравнить две фигуры, чтобы определить, какая из них больше или меньше другой, используя сопоставимый интерфейс

#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 отсутствуют. Может быть, тоже подумайте о проверке на нуль.