用Java实现接口

用Java实现接口,java,interface,Java,Interface,我编写了一个实现队列接口的框架类。当我编译时,我得到一个ErrMsg,要求从对象类实现add方法(或者它是否引用对象接口?我在Java API中查找了这两个方法,它们都没有add方法) 为什么我会出现这个错误?这是否意味着实现给定接口的非抽象类需要实现所实现类中的所有方法?我本以为不会 import java.util.* ; class ArrayQueue implements Queue { private Object[] elems ; private int fro

我编写了一个实现
队列
接口的框架类。当我编译时,我得到一个ErrMsg,要求从对象类实现
add
方法(或者它是否引用对象接口?我在Java API中查找了这两个方法,它们都没有add方法)

为什么我会出现这个错误?这是否意味着实现给定接口的非抽象类需要实现所实现类中的所有方法?我本以为不会

import java.util.* ;
class  ArrayQueue implements Queue
{
    private Object[] elems ;
    private int front, rear, length ;

    public static void main(String[] args) 
    {
        System.out.println("Hello World!");
    }

    public ArrayQueue(int maxLength)
    {
        length = 0 ;
        front = 0 ;
        rear = 0 ;
        elems = new Object[maxLength] ;
    }

    public  boolean offer(Object o) {}

    public  Object poll() {}

    public  Object remove() {}

    public  Object peek() {}

    public  Object element() {}
}
编译器消息:

ArrayQueue不是抽象的,而是 不重写抽象方法 在中添加(java.lang.Object) java.util.Queue

顺便说一句,除了家庭作业之外,还有其他标签可以说明这是在学习的环境中完成的吗?我正在做的不是家庭作业,而是我所做的:学习

[编辑]

我一直在看这个API页面,但它没有提到add()…我看错页面了吗


实现接口的类必须实现接口的所有方法,除非它是抽象类。这就是错误的意思

要修复它,您需要实现add()方法或使类抽象


缺少方法。

实现接口的类必须实现接口的所有方法,除非它是抽象类。这就是错误的意思

要修复它,您需要实现add()方法或使类抽象


缺少方法。

实现接口的类必须实现接口中的所有方法,以及接口继承的任何其他接口中的所有方法

抽象类不需要实现它所实现的接口中的所有方法,但是继承抽象类的任何具体类都需要

接口的全部要点是,实现接口的任何类都可以透明地用作实现。
如果类不需要实现其接口的所有成员,那么这将无法达到目的

在您的示例中,如果有人写

Collection myQueue = new ArrayQueue();
myQueue.add("Hi!");
这段代码调用了一个您没有编写的方法


错误告诉您没有实现名为
add
的方法,该方法将
对象作为参数。
该方法来自
队列
接口,如消息末尾所述。

队列
接口依次从
集合
接口继承此方法。

实现接口的类必须实现接口中的所有方法,以及接口继承的任何其他接口中的所有方法

抽象类不需要实现它所实现的接口中的所有方法,但是继承抽象类的任何具体类都需要

接口的全部要点是,实现接口的任何类都可以透明地用作实现。
如果类不需要实现其接口的所有成员,那么这将无法达到目的

在您的示例中,如果有人写

Collection myQueue = new ArrayQueue();
myQueue.add("Hi!");
这段代码调用了一个您没有编写的方法


错误告诉您没有实现名为
add
的方法,该方法将
对象作为参数。
该方法来自
队列
接口,如消息末尾所述。

队列
接口依次从
集合
接口继承此方法。

如果查看该接口,您将看到有一个方法,
add()
,它接受一个参数
java.lang.Object

为了实现
队列
接口,因此需要实现该方法

更一般地说,每当您
实现类中的接口时,您都需要为该接口中的每个方法编写一个实现(或者将您的类标记为
abstract


请注意,编译器不是要求您实现来自
java.lang.Object
的方法,而是要求您实现一个接口,其签名为
add(java.lang.Object)
,这意味着一个名为
add
的方法,如果您查看该接口,该方法的类型为
java.lang.Object
,您将看到有一个方法,
add()
,它接受一个参数
java.lang.Object

为了实现
队列
接口,因此需要实现该方法

更一般地说,每当您
实现类中的接口时,您都需要为该接口中的每个方法编写一个实现(或者将您的类标记为
abstract


请注意,编译器不是要求您实现来自
java.lang.Object
的方法,而是要求您实现一个签名为
add(java.lang.Object)的接口
这意味着名为
add
的方法带有一个类型为
java.lang.Object

的参数。此错误消息表明您尚未使用以下原型实现该方法:

add(java.lang.Object)

(因此,提到的
对象
类指的是参数类型),它在
队列
接口中声明。

此错误消息表明您尚未使用以下原型实现该方法:

add(java.lang.Object)

(因此,提到的
对象
类是指参数类型),它是在
队列
接口中声明的。

java.util.Queue
有一个
添加
方法,所以如果扩展
队列
,必须实现它

消息提到
Object
的原因是
Queue
API指定了
add
方法t