Java – I can have different copies of static variables for each different type of inheritance class
I want the same static variable with different values, depending on the type of class
So I will
public class Entity
{
public static Bitmap sprite;
public void draw(Canvas canvas,int x,int y)
{
canvas.drawBitmap(sprite,x,y,null);
}
}
public class Marine extends Entity
{
}
public class Genestealer extends Entity
{
}
Then in my main program:
Marine.sprite = // Load sprite for all instances of Marine Genestealer.sprite = // Load sprite for all instances of Genestealer
I don't want to store the same sprite in every instance of the class I hope there is one for each type I want to inherit the static sprite variable and the drawing function of the drawing sprite But I don't want the genstealer elves to cover the ocean elves
Is that possible?
What should I do?
Solution
Using abstract methods:
public class Entity
{
public abstract Bitmap getSprite();
public void draw(Canvas canvas,int y)
{
canvas.drawBitmap(getSprite(),null);
}
}
public class Marine extends Entity
{
public Bitmap getSprite() {
return /*the sprite*/;
}
}
If you like, the sprite returned by getsprite can be static About the benefits of this approach:
>You can't (easily) forget to include a sprite in your subclass because the compiler will complain if you don't implement abstract methods. > It's very flexible Suppose Marines should look different once they "upgrade" Just change marine's getsprite method to take this level into account. > This is the standard OO idiom for such things, so people who look at their code don't leave their minds
