我很确定这可能是我愚蠢,但我看起来又高又低,并请一位经验丰富的朋友寻求帮助。但是,我试图从我的抽象形状类中访问x和y并在我的界面中使用它们。但是,我正在打砖墙。我认为最好的选择就是让它们受到保护并以这种方式解决。无论如何,我的问题是,在Moveable的类移动中,我将如何操纵x和y?
/*
* 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();
}
答案 0 :(得分:3)
您的代码中存在一个非常基本的错误:
您的interface
有方法定义。而“在最常见的形式中,interface
是一组带有空体的相关方法。”。所以你不能在接口中为方法提供实现。
因此,您可以将move()
方法的定义从Moveable
接口移到抽象类Shape
。
编辑:以下是您可以这样做的方法:
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();
}
了解接口@ http://docs.oracle.com/javase/tutorial/java/concepts/interface.html
答案 1 :(得分:0)
如前所述,您不能在界面中拥有方法主体。
如果您希望多个类共享move
方法的实现,那么一些基本选项是:
Moveable
成为抽象类而不是接口Moveable
的{{1}}的基本实施,并MoveableBase implements Moveable
延长Shape