Challenge 1: Shape and a Circle Subclass — Possible Solution ==================================================================== Shape.java: public class Shape { protected String name; public Shape(String name) { this.name = name; } public double area() { return 0.0; } } Circle.java: public class Circle extends Shape { private double radius; public Circle(double radius) { super("Circle"); this.radius = radius; } @Override public double area() { return Math.PI * radius * radius; } public static void main(String[] args) { Circle c = new Circle(3.0); System.out.println(c.name + " area: " + c.area()); } } Output: Circle area: 28.274333882308138 Explanation: Circle extends Shape (exactly one superclass), and its constructor's first statement is super("Circle"), setting the inherited protected name field. @Override marks area() as intentionally replacing Shape's own 0.0-returning version, and the compiler confirms the signature genuinely matches an existing superclass method. WHY THIS WORKS AS AN ANSWER ------------------------------ This follows the chapter's own Animal/Dog shape exactly -- a single extends, an explicit super() call as the constructor's first statement, and @Override used correctly on a method that truly overrides its superclass's version.