Consider the following class declarations.

public class Range
{
private int lowValue;
public Range(int low)
{
lowValue = low;
}
public String toString()
{
return "This range starts with " + lowValue;
}
}
public class ClosedRange extends Range
{
private int highValue;
public ClosedRange(int low, int high)
{
super(low);
highValue = high;
}
public String toString()
{
return super.toString() + " and ends with " + highValue;
}
}
A code segment appearing in a method in another class is intended to produce the following output.

This range starts with 1 and ends with 10

Which of the following code segments will produce this output?

A. Range r1 = new Range(1);
System.out.println(r1);
B. Range r2 = new Range(1, 10);
System.out.println(r2);
C. ClosedRange r3 = new ClosedRange(1, 10);
System.out.println(r3);
D. ClosedRange r4 = new ClosedRange(10, 1);
System.out.println(r4);
E. ClosedRange r5 = new ClosedRange(10);
System.out.println(r5);