я новичок в Java, и мой английский не так хорошо ... так что извините заранее :)Различные статические поля из класса и sublclasses
У меня есть суперкласс: Genericresource со статическим полем, кол сколько экземпляров создаются и способ для вызова этого значения:
public class Genericresource {
private static int counter;
public Genericresource() { counter++; }
public static int howmany() { return counter; }
//other useful code here
}
и я хочу, чтобы создать некоторые пол-идентичные подклассы, каждый для определенного ресурса:
public class Type1Resource extends Genericresource {
// here specific code
}
Теперь, в т он главный класс:
Genericresource a1 = new Genericresource();
Genericresource a2 = new Genericresource();
Type1Resource b = new Type1Resource();
Type1Resource b2 = new Type1Resource();
int howa = Genericresource.howmany();
int howb = Type1Resource.howmany();
и я ожидал, что я буду использовать два различных счетчика статические поля, одно для суперкласса Genericresource, и один для подкласса Type1Resource. Мой желаемый результат: Howa = 2 howb = 2. Мой реальный результат: Howa 4 howb 4.
Так я использую тот же счетчик статическое поле, даже если я Instantiate 2 разных классов, в то время как мне нужно Мне нужно вместо этого ссылаться на разные статические поля счетчика, по одному для каждого подкласса, одновременно сохраняя структуру статических методов суперкласса. Как я могу это сделать?
является правильным. Если вы все еще хотите иметь этот дизайн, вам необходимо реорганизовать другую структуру данных, такую как Map –
@andresoviedo Я согласен ... или заводской шаблон. – Mena
Идея состоит в том, чтобы обеспечить уникальную реализацию Genericresource с глобальными операциями над конкретными ресурсами. Мой проект - это системная плата (для проверки моих собственных бета-версий boardgame), и я отобразил класс Genericresource для всех опечаток ресурсов со статической дисперсией поля int и статичной суммой int, которая подсчитывает (при необходимости) сумму из общих ячеек, которые у меня есть, и GoldResource как sublclass для «золотых» плиток, с одинаковыми статическими полями для подсчета конкретного использования плиток. Конечно, я могу переосмыслить структуру данных, но она была настолько изящной, что все со статическими полями –