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 int getX()
   {  return x;
   }

   protected int x;
}

public class Two
   extends One
{
   public Two(int theY)
   {  super();
      y = theY;
   }

   private int y;

   public static void main(String[] args)
   {  Two obj = new Two(3);
      System.out.println(obj);
   }
}
(a) The program doesn't compile.
(b) It compiles but, when run, gives a null pointer exception.
(c) It compiles and, when run, displays null.
(d) It compiles and, when run, displays a reference to obj.
(e) It compiles and, when run, displays the empty string.

Select the most appropriate answer.