Challenge 3: A Static Factory Method, origin() — Possible Solution ==================================================================== Point.java: public class Point { private double x; private double y; public Point(double x, double y) { this.x = x; this.y = y; } public static Point origin() { return new Point(0.0, 0.0); } public String toString() { return "(" + x + ", " + y + ")"; } public static void main(String[] args) { Point p = Point.origin(); System.out.println(p); } } Output: (0.0, 0.0) Explanation: origin() is called as Point.origin() -- directly on the class, with no Point instance existing yet at the call site. It must be static for exactly that reason: an instance method can only be invoked on an existing object (obj.method()), but here there is no object yet -- producing that very first object is origin()'s whole job. Only after origin() returns does a real Point instance exist for p to hold. WHY THIS WORKS AS AN ANSWER ------------------------------ This directly demonstrates the chapter's own claim that static methods belong to the class rather than an instance, using the same factory-method shape the chapter introduced (Account's own empty()), and explains the ordering dependency -- no object exists until the static method itself creates one.