Java: статическое поле в абстрактном классе

Я просто начинаю с примера, который лучше всего объясняет:

public abstract class A{
    static String str;
}

public class B extends A{
    public B(){
        str = "123";
    }
}

public class C extends A{
    public C(){
        str = "abc";
    }
}

public class Main{

    public static void main(String[] args){
        A b = new B();
        A c = new C();
        System.out.println("b.str = " + b.str);
        System.out.println("c.str = " + c.str);
    }
}

Будет напечатано:

b.str = abc

c.str = abc

Но я хотел бы решение, в котором каждый подкласс, который создает экземпляр суперкласса, имеет свою собственную переменную класса, в то же время я хочу иметь возможность ссылаться на эту переменную класса через идентификатор или вызов метода, определен в абстрактном суперклассе.

Итак, я хотел бы, чтобы результат был:

b.str = 123

c.str = abc

Это выполнимо?

48
задан Tommy 4 February 2011 в 13:56
поделиться