title: Overriding Constants in Java
body: <p>I have two classes that extend the same abstract class. They both need the same constant, but with different values. How can I do this? Some example code to show what I want to do.</p>
  
  <pre><code>abstract class A {
     public static int CONST;
  }
  
  public class B extends A {
     public static int CONST = 1;
  }
  
  public class C extends A {
     public static int CONST = 2;
  }
  
  public static void main(String[] args){
      A a = new B();
      System.out.println(a.CONST); // should print 1
  }
  </code></pre>
  
  <p>The above code does not compile because CONST is not initialized int class A. How can I make it work? The value of CONST should be 1 for all instances of B, and 2 for all instances of C, and 1 or 2 for all instances of A. Is there any way to use statics for this?</p>