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.
- Bcheck_circle
Square fails to compile because it must implement area() or be abstract.
- 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.