Как правило, вы не столкнулись бы с этой проблемой, если бы мы не говорили о полях класса c: поля
public class Program
{
public static void main(String[] args)
{
Foo object1 = new Foo();
Foo object2 = new Foo();
object1.instanceColor = "red";
object2.instanceColor = "green";
object1.staticColor = "red";
object2.staticColor = "green";
System.out.println(object1.staticColor);
System.out.println(object2.staticColor);
// output is "green green"
System.out.println(object1.instanceColor);
System.out.println(object2.instanceColor);
// output is "red green"
}
}
public class Foo
{
public static String staticColor;
public String instanceColor;
public Foo() {}
}
Стати c действительно были бы общими для всех экземпляров класса.
Однако поля экземпляров принадлежат экземплярам и не влияют друг на друга.