Challenge 3: A Forgotten super() Call — Possible Solution ==================================================================== Vehicle.java: public class Vehicle { protected String type; public Vehicle(String type) { // no no-arg constructor exists this.type = type; } } Car.java: public class Car extends Vehicle { public Car() { // no explicit super(...) call written here } } Representative compile error: Car.java:2: error: constructor Vehicle in class Vehicle cannot be applied to given types; public Car() { ^ required: String found: no arguments reason: actual and formal argument lists differ in length Explanation: Because Car's constructor has no explicit super(...) call, Java tries to insert an implicit no-argument super() call automatically. But Vehicle only defines a constructor that takes a String -- it has no no-argument constructor for the implicit call to match. The compiler can't silently fabricate one, so it fails instead, naming exactly which constructor it tried and failed to match. The fix: write super(someTypeString) explicitly as Car's constructor's first statement, supplying the String Vehicle's constructor requires. WHY THIS WORKS AS AN ANSWER ------------------------------ This reproduces the chapter's own warn-box exactly: a superclass with no no-arg constructor and a subclass that omits an explicit super() call, producing a real compile error precisely because Java's automatic implicit super() insertion has nothing valid to insert.