What is the effect of attempting to compile and run this Java program that consists of two class definitions in separate files:
public class One
{
   public One()
   {  id++;
   }

   public int getId()
   {  return id;
   }

   private int id = nextId;
   private static final int nextId = 0;
}

public class Two
{
   public static void main(String[] args)
   {  One o1 = new One();
      One o2 = new One();
      One o3 = new One();
      System.out.println(o1.getId() + ", " +
         o2.getId() + ", " + o3.getId());
   }
}
(a) The program doesn't compile due to the assignment of nextId into id.
(b) It compiles but, when run, it gives an error on the assignment of nextId into id.
(c) It compiles and, when run, displays 1, 1, 1
(d) It compiles and, when run, displays 0, 1, 2
(e) It compiles and, when run, displays 1, 2, 3

Select the most appropriate answer.