Я пытаюсь понять, как обходить полиморфизм в Java. Я создал родительский класс, который имеет слишком много общих методов, которые все дети будут использовать одинаково.
Каждый из дочерних классов подклассов имеет общую статическую информацию. Эти переменные или информация будут использоваться в методах, объявленных только в родительском элементе.
Проблема в том, что доступ к статическим переменным из родительских методов не представляется возможным,
Это решение объявлять общую информацию для каждого экземпляра, но поскольку будет тысячи экземпляров, это такая пустая трата памяти.
Простая проработка того, что я имею в виду, это следующий код:
class testParent {
static int k;
public void print()
{
System.out.println(k);
}
}
class testChild2 extends testParent
{
static
{
testChild2.k =2;
}
}
public class testChild1 extends testParent{
static
{
testChild1.k = 1;
}
public static void main(String[] args)
{
new testChild1().print();
new testChild2().print();
new testChild1().print();
}
}
ожидаемый результат был
1
2 * * +1010
1.
но что происходит, это:
1
2
2
Можно подумать, что при инициации каждого подкласса устанавливаются статические переменные этого подкласса, и тогда все методы, относящиеся к этому подклассу, имеют доступ к соответствующему значению 'k'.
Но на самом деле происходит то, что все подклассы редактируют одну и ту же статическую переменную, которая является общей для всех подклассов, и, следовательно, разрушают весь мой смысл использования статических переменных для каждого подкласса и его экземпляров и использования общих методов в Parent, обращающихся к этим переменным.
Есть идеи, как это можно сделать?