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