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;

   private int x;

public class Two
   extends One
   public int getY()
   {  return y;

   private int y;

   public static void main(String[] args)
   {  Object[] a = new Object[3];
      a[0] = new Two();
      Object obj = (Two) a[0];
(a) The program compiles but, when run, displays 0.
(b) It compiles but, when run, gives a null pointer exception.
(c) It compiles but, when run, gives a type mis-match error.
(d) It doesn't compile.

Select the most appropriate answer.