This is my base class:
abstract public class CPU extends GameObject {
protected float shiftX;
protected float shiftY;
public CPU(float x, float
If you don't specify any default constructor then at the compile time it will give you this error "constructor in class cannot be applied to given type;" Note: If you created any parameterized constructor.
I suspect you should write
protected float shiftX;
protected float shiftY;
public CPU(float x, float y, float shiftX, float shiftY) {
super(x, y);
this.shiftX = shiftX;
this.shiftY = shiftY
}
and
public Beam(float x, float y, float shiftX, float shiftY, int beamMode) {
super(x,y,shiftX,shiftY);
try {
image = ImageIO.read(new File("/home/tab/Pictures/Beam"+beamMode+".gif"));
} catch (Exception e) {
throw new AssertionError(e);
}
}
The final object needs to in initialize the super class using one of its constructors. If there is a default (no-parameter) constructor then the compiler calls it implicitly, otherwise the subclass constructor needs to call it using super
as the first line of its constructor.
In your case, that would be:
public Beam(float x, float y, float shiftX, float shiftY, int beamMode) {
super(x, y)
And remove the assignments to this.x
and this.y
later.
Also, avoid making them protected
, makes it difficult to debug. Instead add getters
and if absolutely necessary setters
As the error is trying to tell you, you need to pass parameters to your base class' constructor.
Add super(x, y);