Creating Superclasses and Subclasses

AP Computer Science A· difficulty 4/5

Shape +area():double Circle Square

Consider:

<code class="language-java">abstract class Shape { public abstract double area(); } class Circle extends Shape { private double r; public Circle(double r) { this.r = r; } public double area() { return Math.PI * r * r; } } class Square extends Shape { /* no area() override */ } </code></pre> Which statement is true?

  • A

    Square compiles; calling new Square().area() throws AbstractMethodError.

  • B

    Square fails to compile because it must implement area() or be abstract.

    check_circle
  • C

    Both Circle and Square compile and behave normally.

  • D

    Shape fails to compile because abstract classes cannot have abstract methods.

Explanation

A concrete subclass of an abstract class must implement every inherited abstract method (or itself be declared abstract). Square does neither, so it fails to compile.

Want 10 more like this — adaptive to your weak spots?

Related questions