In the interest of code clarity, static members of a base class should never be accessed using a derived type's name.
Doing so is confusing and could create the illusion that two different static members exist.
class Parent {
public static int counter;
}
class Child extends Parent {
public Child() {
Child.counter++; // Noncompliant
}
}
class Parent {
public static int counter;
}
class Child extends Parent {
public Child() {
Parent.counter++;
}
}