我有一个形状。形状有圆形,三角形,正方形。
class interface Shape(){
print();
sort();
}
如果circle
,triangle
和square
延伸shape
,并且sort()
的代码对于所有形状几乎相同,我该如何使用{ {1}}没有在圆形,三角形和方形中添加正文实现?
我可以在sort()
中有一个具体的实现,但我总是被告知不要这样做。
答案 0 :(得分:1)
使用abstract class
,您可以 实施 sort()
方法(class
行为)和定义 print()
方法(interface
行为):
public abstract class AbstractShape
{
public abstract void print();
public void sort(AbstractShape[] shapes) {
// make your own implementation -> sort shapes
}
}
public class Circle extends AbstractShape
{
@Override public void print() {
System.out.println("I'm a circle");
}
}
public class Triangle extends AbstractShape
{
@Override public void print() {
System.out.println("I'm a triangle");
}
}
public class Square extends AbstractShape
{
@Override public void print() {
System.out.println("I'm a square");
}
}
答案 1 :(得分:0)
您如何定义不同类型的形状顺序?
如果它是一个任意的顺序,例如 - Circles first,那么Triangles,最后是Squares - 你的比较方法必须知道所有这些类型。
如果您根据所有形状(例如区域)共享的某些属性定义顺序,则可以在Shape类中实现比较方法,而不需要知道任何子类。
顺便说一句,如果您的sort()
方法应该对形状集合进行排序,则不需要它。使用Collections.sort并实施Comparator<Shape>
或Comparable<Shape>
。