0

这是我的任务:设计一个名为 Colorable 的接口,其方法名为 howToColor()。可着色对象的每个类都必须实现 Colorable 接口。设计一个名为 Square 的类,它扩展 GeometricObject 并实现 Colorable。实现 howToColor 以显示消息“Color all 四边”。编写一个测试程序,创建一个包含五个 GeometricObject 的数组。对于数组中的每个对象,如果它是可着色的,则它的 howToColor 方法。

我在这一行的 Netbeans 中遇到错误: GeometricObject[] objects = {new Square(), new Triangle(), new... 说不是抽象的,也不会覆盖 Colorable 中的抽象方法 howToColor()。提前致谢!!!

public abstract class TestGeometricObject {

public static void main(String[] args) {
    GeometricObject[] objects = {new Square(), new Triangle(), new Circle(), new Trapezoid() {}, new Octagon()};
    for (int i = 0; i < objects.length; i++) {
        GeometricObject object = objects[i];
        if (objects instanceof Colorable[]) {
            Colorable colorable = (Colorable) object;
            colorable.howToColor();
        }
        else {
        System.out.println("Not colorable");
    }

    }
}
}

public interface Colorable {
    public String howToColor();

}

public abstract class GeometricObject implements Colorable {

  /**Default construct*/
  public GeometricObject() {
  }

}

public abstract class Square extends GeometricObject implements Colorable {

public Square() {

}

public void Trapezoid() {

}

@Override
public String howToColor(){
    return "Color all four sides";
}

}
4

2 回答 2

0

您对抽象的含义感到困惑。抽象意味着它说一个方法应该存在而不定义它。对于您收到错误的每个类:

SomeClass 不是抽象的,不会覆盖 Colorable 中的抽象方法 howToColor()。

在该类中添加以下定义howToColor(

public string howToColor(){
    return "color it somehow";
}

将返回的字符串更改为与形状相对应。不要使那个类抽象。

于 2013-07-26T01:49:39.693 回答
0

让我再次打印您的错误消息。

TestGeometricObject.java:4: error: Square is abstract; cannot be instantiated

看?

public abstract class Square

为什么不abstract从类中删除修饰符Square


根据 OP 的评论更新

我不禁假设没有完整的源代码。这就是我为你所做的。

以下源代码

public class TestGeometricObject {
    public static void main(String[] args) {
        GeometricObject[] objects = {new Square(), new Triangle()};
        for (GeometricObject object : objects) {
            System.out.println(object.howToColor());
        }
    }
}

interface Colorable {
    String howToColor();
}

abstract class GeometricObject implements Colorable {
}

class Square extends GeometricObject {
    @Override
    public String howToColor(){
        return "Color all four sides";
    }

}

class Triangle extends GeometricObject {
    @Override
    public String howToColor(){
        return "Color all three sides";
    }

}

印刷

$ java TestGeometricObject
Color all four sides
Color all three sides
于 2013-07-26T01:53:22.003 回答