218k views
4 votes
Consider the following class declarations.

public class Point
{
private double x; // x-coordinate
private double y; // y-coordinate

public Point()
{
x = 0;
y = 0;
}
public Point(double a, double b)
{
x = a;
y = b;
}

// There may be instance variables, constructors, and methods that are not shown.
}

public class Circle
{
private Point center;
private double radius;
/** Constructs a circle where (a, b) is the center and r is the radius.
*/
public Circle(double a, double b, double r)
{
/* missing code */
}
}
Which of the following replacements for /* missing code */ will correctly implement the Circle constructor?

I.
center = new Point();
radius = r;
II.
center = new Point(a, b);
radius = r;
III.
center = new Point();
center.x = a;
center.y = b;
radius = r;

A. III only

B. I, II, and III

C. II and III only

D. I only

II only

1 Answer

2 votes

Answer:

II only

Step-by-step explanation:

When you look at I, you can see that it assigns the center object with the default values, x=0 and y=0. However, we must assign the values of a and b.

When you look at III, you can see that it tries to access the private variables of the Point class, x and y, directly. This is not allowed. It will give an error actually.

When you look at II, you can see that it assigns the values a and b to center, and r to the radius as expected.

User Darj
by
4.1k points