用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