What is the effect of attempting to compile and run this Java program that consists of two definitions in separate files:
public interface ITest
{
   public int getX();

   public void setX(int theX);

   public void display()
   {  System.out.println(getX());
   }
}

public class Test
   implements ITest
{
   public int getX()
   {  return x;
   }

   public void setX(int theX)
   {  x = theX;
   }

   private int x;

   public static void main(String[] args)
   {  Test obj = new Test();
      obj.setX(15);
      obj.display();
   }
}
(a) The program compiles and, when run, displays 0.
(b) It compiles and, when run, displays 15.
(c) It doesn't compile.
(d) It compiles and, when run, displays nothing.

Select the most appropriate answer.