Java中抽象类和接口的问题
我很确定这可能是我的愚蠢,但我已经四处张望,向一位更有经验的朋友寻求帮助。然而,我正试图从抽象图形类访问x和y,并在接口中使用它们。然而,我现在遇到了困难。我认为最好的选择是让他们受到保护,并以这种方式工作。不管怎样,我的问题是,在Moveable类move下,我将如何操作x和yJava中抽象类和接口的问题,java,interface,abstract-class,Java,Interface,Abstract Class,我很确定这可能是我的愚蠢,但我已经四处张望,向一位更有经验的朋友寻求帮助。然而,我正试图从抽象图形类访问x和y,并在接口中使用它们。然而,我现在遇到了困难。我认为最好的选择是让他们受到保护,并以这种方式工作。不管怎样,我的问题是,在Moveable类move下,我将如何操作x和y /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package C
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package C_I;
import java.awt.*;
/**
*
* @author Mouse
*/
public abstract class Shape implements Moveable {
private int x;
private int y;
private Color myColor;
private Color background;
public Shape(int tX, int tY, Color tmpColor, Color tmpBackground)
{
x = tX;
y = tY;
myColor = tmpColor;
background = tmpBackground;
}
public abstract void draw();
public abstract void clear();
public abstract void resize(double s);
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public Color getmyColor()
{
return myColor;
}
public Color getBackground()
{
return background;
}
public void setX(int tmpX)
{
x = tmpX;
}
public void setY(int tmpY)
{
y = tmpY;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package C_I;
/**
*
* @author Mouse
*/
public interface Moveable{
void clear();
public void move(int alphaX, int alphaY)
{
setX(getX() + alphaX);
}
void draw();
}
您的代码中有一个非常基本的错误: 您的接口有一个方法定义。而在其最常见的形式中,接口是一组具有空实体的相关方法。。所以您不能在接口中提供方法的实现。 因此,您可以将move方法的定义从Moveable接口移动到抽象类形状 编辑:以下是您的操作方法:
public abstract class Shape implements Moveable {
.....
public void move(int alphaX, int alphaY)
{
setX(getX() + alphaX);
}
}
public interface Moveable{
void clear();
public void move(int alphaX, int alphaY);
void draw();
}
阅读有关接口的内容@如前所述,接口中不能有方法体 如果希望多个类共享move方法的一个实现,则以下是一些基本选项: 使Moveable成为抽象类而不是接口 提供一个称为MoveableBase的Moveable的基本实现implements Moveable,并使形状扩展MoveableBase
有什么问题吗?恐怕我做不到,条件要求它在Moveable中有一个move方法。@user1256211是接口本身实现move方法的条件,或者只是接口指定实现具体类包含move方法?后者很有道理;前者非常奇怪。根据他的UML图和非常糟糕的说明,看起来他想要前者。Moveable有一个叫做move的方法,它以两个整数作为参数。你可以把它们想象成delta-x和delta-y。你的移动方法做了三件事,就像调整大小一样。首先,它应该清除当前位置的形状。接下来,它分别将形状的当前x和y位置增量/减量增量-x和增量-y。例如,move-1,1将使形状的x位置减少1,y位置增加1。最后,它在新位置绘制形状。接口不能有方法实现。你一定是误解了什么。