Consider the following class definitions.

public class Appliance
{
private int id;
private String brand;
public Appliance(int aId, String aBrand)
{ /* implementation not shown */ }
public String display()
{ /* implementation not shown */ }
}
public class Refrigerator extends Appliance
{
private int numOfDoors;
public Refrigerator(int rId, String rBrand, int rNumOfDoors)
{ /* implementation not shown */ }
}
The following code segment appears in a class other than Appliance or Refrigerator.

public static void displayFeatures(Refrigerator r)
{
System.out.println(r.display()); // Line 3
}
Appliance a1 = new Refrigerator(456, "AllBrand", 2); // Line 6
Refrigerator a2 = new Refrigerator(789, "Xtreme", 3); // Line 7
displayFeatures(a1); // Line 8
displayFeatures(a2); // Line 9

Which of the following best explains why the code segment will not compile?

A. Line 3 causes a compile-time error because the Refrigerator class is missing the display() method.
B. Line 6 causes a compile-time error because the variable a1 is incorrectly instantiated.
C. Line 7 causes a compile-time error because the variable a2 is incorrectly instantiated.
D. Line 8 causes a compile-time error because the parameter a1 in the call displayFeatures(a1) has the incorrect data type.
E. Line 9 causes a compile-time error because the parameter a2 in the call displayFeatures(a2) has the incorrect data type.