Given:
public class Circle {
double radius;
public double area:
public Circle (double r) { radius = r;}
public double getRadius() {return radius;}
public void setRadius(double r) { radius = r;}
public double getArea() { return /* ??? */;}
}
class App {
public static void main(String[] args) {
Circle c1 = new Circle(17.4);
c1.area = Math.PI * c1.getRadius() * c1.getRadius();
}
}
This class is poorly encapsulated. You need to change the circle class to compute and return the
area instead.
What three modifications are necessary to ensure that the class is being properly encapsulated?
A.
Change the access modifier of the setradius () method to private
B.
Change the getArea () method
public double getArea () { return area; }
C.
When the radius is set in the Circle constructor and the setRadius () method, recomputed the
area and store it into the area field
D.
Change the getRadius () method:
public double getRadius () {
area = Math.PI * radius * radius;
return radius;
}
Explanation:
A: There is no need to have SetRadius as public as the radius can be set through
the Circle method.
B: We need to return the area in the GetArea method.
C: When the radius changes the Area must change as well.
Incorrect answer:
D: the GetRadius() method does not change the radius, so there is no need to recomputed the
area.
The correct answer is ACB
How is setting the method access modifier to private is right !
You should add static on Circle class between public and class