Java 实现接口的类没有';“我不工作,因为”;类不是抽象的,并且不重写抽象方法…“;。错在哪里?

Java 实现接口的类没有';“我不工作,因为”;类不是抽象的,并且不重写抽象方法…“;。错在哪里?,java,interface,interface-implementation,Java,Interface,Interface Implementation,有一个Java教程。我重复了这个例子,但它不起作用。NetBeans在RectanglePlus类声明的左侧显示错误。错误在于: rectangleplus.rectangleplus不是抽象的,不重写 中的抽象方法为largerthan(rectangleplus.Relatable) 矩形加号。相关 我做的和教程中写的一样。为什么它显示了错误?这是我的项目实施 项目名称为RectanglePlus 包的名称是rectangleplus 项目中的第一个文件是InterfaceRelatable

有一个Java教程。我重复了这个例子,但它不起作用。NetBeans在
RectanglePlus
类声明的左侧显示错误。错误在于:

rectangleplus.rectangleplus不是抽象的,不重写 中的抽象方法为largerthan(rectangleplus.Relatable) 矩形加号。相关

我做的和教程中写的一样。为什么它显示了错误?这是我的项目实施

  • 项目名称为
    RectanglePlus
  • 包的名称是
    rectangleplus
  • 项目中的第一个文件是Interface
    Relatable

    package rectangleplus;
    
    public interface Relatable {
       int isLarger(Relatable other);   
    }
    
    项目中的第二个文件是主类
    RectanglePlus
    ,带有辅助类
    Point

    package rectangleplus;
    
    public class RectanglePlus implements Relatable {
    
        public int width = 0;
        public int height = 0;
        public Point origin;
    
        // four constructors
        public RectanglePlus() {
            origin = new Point(0, 0);
        }
        public RectanglePlus(Point p) {
            origin = p;
        }
        public RectanglePlus(int w, int h) {
            origin = new Point(0, 0);
            width = w;
            height = h;
        }
        public RectanglePlus(Point p, int w, int h) {
            origin = p;
            width = w;
            height = h;
        }
    
        // a method for moving the rectangle
        public void move(int x, int y) {
            origin.x = x;
            origin.y = y;
        }
    
        // a method for computing
        // the area of the rectangle
        public int getArea() {
            return width * height;
        }
    
        // a method required to implement
        // the Relatable interface
        public int isLargerThan(Relatable other) {
            RectanglePlus otherRect 
                = (RectanglePlus)other;
            if (this.getArea() < otherRect.getArea())
                return -1;
            else if (this.getArea() > otherRect.getArea())
                return 1;
            else
                return 0;               
        }
    
       public static void main(String[] args) {
          // TODO code application logic here
       }
    }
    
    class Point {
       int top;
       int left;
       int x;
       int y;
    
       public Point(int t, int l) {
          top = t;
          left = l;
       }
    }
    
    package rectangleplus;
    公共类RectanglePlus实现了Relatable{
    公共整数宽度=0;
    公共整数高度=0;
    公共点源;
    //四个建设者
    公共矩形加号(){
    原点=新点(0,0);
    }
    公共矩形加号(p点){
    原点=p;
    }
    公共矩形加号(整数w,整数h){
    原点=新点(0,0);
    宽度=w;
    高度=h;
    }
    公共矩形加号(点p、点w、点h){
    原点=p;
    宽度=w;
    高度=h;
    }
    //一种移动矩形的方法
    公共无效移动(整数x,整数y){
    原点x=x;
    原点y=y;
    }
    //一种计算方法
    //矩形的面积
    公共区域(){
    返回宽度*高度;
    }
    //需要实现的方法
    //相关接口
    公共国际岛国(相关其他){
    矩形加其他矩形
    =(矩形加)其他;
    if(this.getArea()otherRect.getArea())
    返回1;
    其他的
    返回0;
    }
    公共静态void main(字符串[]args){
    //此处的TODO代码应用程序逻辑
    }
    }
    类点{
    int top;
    int左;
    int x;
    int-y;
    公共点(int t,int l){
    top=t;
    左=l;
    }
    }
    
    为什么在教程示例中没有提到抽象?没有mitakes,教程示例是否可以工作


    谢谢。

    在界面中,您声明了方法
    isLarger
    ,但在类中,您声明了
    isLarger,然后将一个更改为另一个名称,就可以了。

    在界面中,您声明的方法是
    isLarger
    ,但在类中声明的方法是
    isLarger,然后将一个更改为另一个名称,这样就可以了。

    您没有正确地实现
    Relatable
    接口中的
    isLarger()
    方法。重命名
    isLargerThan(Relatable other)
    方法,使其如下所示:

    @Override
    int isLarger(Relatable other) {
    }
    

    使用
    @Override
    注释是一个好主意,它允许您捕获问题中的错误。

    您没有正确实现
    Relatable
    界面中的
    isLarger()
    方法。重命名
    isLargerThan(relateable other)
    方法,这样看起来如下:

    @Override
    int isLarger(Relatable other) {
    }
    

    使用
    @Override
    注释是个好主意,它允许您捕获问题中的错误。

    只是一个注释:不要让
    is
    XYZ方法返回
    int
    值<代码>is
    -方法应返回
    布尔值
    s。如果你想返回一个
    int
    ,调用你的方法
    compare
    只是一个注释:不要让
    is
    XYZ方法返回一个
    int
    值<代码>is
    -方法应返回
    布尔值
    s。如果要返回
    int
    ,请调用方法
    compare