相关疑难解决方法(0)

有没有办法在Java中覆盖类变量?

class Dad
{
    protected static String me = "dad";

    public void printMe()
    {
        System.out.println(me);
    }
}

class Son extends Dad
{
    protected static String me = "son";
}

public void doIt()
{
    new Son().printMe();
}
Run Code Online (Sandbox Code Playgroud)

功能doIt将打印"爸爸".有没有办法让它打印"儿子"?

java inheritance overriding

152
推荐指数
8
解决办法
18万
查看次数

我是否可以为每种不同类型的继承类使用静态变量的不同副本

我希望具有相同的静态变量,具有不同的值,具体取决于类的类型.

所以我会的

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
{

}
Run Code Online (Sandbox Code Playgroud)

然后在我的主程序中去:

Marine.sprite = // Load sprite for all instances of Marine
Genestealer.sprite = // Load sprite for all instances of Genestealer
Run Code Online (Sandbox Code Playgroud)

我不想在类的每个实例中存储相同的sprite.我希望每种类型都有一个.我想继承静态精灵变量和绘制精灵的绘制函数.但我不希望Genstealer精灵覆盖海洋精灵.

这可能吗?

我该怎么办?

java inheritance static-variables

7
推荐指数
1
解决办法
3385
查看次数

Java 常量继承

我注意到我可以这样做:

public class Message {

    public static final int MIN_BYTES = 5;
}
Run Code Online (Sandbox Code Playgroud)

...并将此类设置为另一个类的父类,并使用另一个值设置相同的常量,例如:

public class Ack extends Message {

    public static final int MIN_BYTES = 1;
}
Run Code Online (Sandbox Code Playgroud)

由于编译器没有抱怨,这使我想到了上述问题:

  1. 这些变量真的一样吗?
  2. 我会说它是最具体的,所以在这种情况下来自 Ack 类。真的吗?
  3. 常量不能改变它们的值(它是最终的),所以如果问题 1 是真的,那怎么可能?

谢谢!

java

5
推荐指数
1
解决办法
58
查看次数

标签 统计

java ×3

inheritance ×2

overriding ×1

static-variables ×1