Java позволяет вам изменять значение переменной для расширенного класса.
Это связано с тем, что статические переменные совместно используются всеми объектами того же класса. Это переменная, которая принадлежит классу, а не объекту (экземпляру).
Таким образом, при расширении статических переменных родительского класса фактически не являются частью расширенного класса, но доступны (если они не являются частными).
Кроме того, это может быть использовано, чтобы делать такие вещи, как:
- , используя различную СТАТИЧЕСКУЮ КОНСТАНТУ для расширенных классов.
Использование для этого состоит в том, чтобы идентифицировать классы, основанные на значении STATIC, как показано на примере использования instanceof. Это может быть дополнительно объединено с переключателем для изменения поведения на основе типа объектов.
Итак, в самом базовом примере представьте, что мы хотим создать переменную, представляющую TYPE.
class A
{
public static final int NODE_TYPE = NODE_PERSON;
public static final int NODE_PERSON = 0;
public static final int NODE_CAR = 1;
}
class B extends Class A
{
public static int NODE_TYPE = NODE_CAR;
}
Это используется во многих структурах, включая Eclipse, абстрактные синтаксические дерева:
http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FASTNode.html
Вы увидите список СТАТИЧЕСКИХ ЦЕЛЫХ ЧИСЕЛ, которые представляют различные типы узлов.
Интересная цитата «Трудно рассуждать о том, почему. Одна из возможных причин заключается в том, что это позволяет добавлять членов в базовый класс, не нарушая никаких производных классов, которые уже имеют член с тем же именем». , Это то, что я не рассматривал. –