Mam dwie klasy, które rozszerzają tę samą klasę abstrakcji. Obie potrzebują tej samej stałej, ale o różnych wartościach. Jak mogę to zrobić? Przykładowy kod pokazujący, co chcę zrobić.Nadpisywanie stałych w Javie
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
}
Powyższy kod nie jest kompilowany, ponieważ CONST nie jest zainicjalizowany w klasie A. Jak mogę go uruchomić? Wartość CONST powinna wynosić 1 dla wszystkich instancji B i 2 dla wszystkich instancji C, i 1 lub 2 dla wszystkich instancji klasy A. Czy istnieje jakikolwiek sposób na użycie tej statystyki?
Dziękujemy! Żałuję tylko, że nie mogę użyć statycznego, ponieważ wartości nie różnią się od jednej instancji B do drugiej. – Fractaly
@Fractaly: Ale różnią się one od wystąpienia "A" do innego. –
should not getConst() in A be abstract? – Fractaly