Abstraction is needed to hide complex details from users and show only what is necessary. In Java, this is done using abstract classes or interfaces. The abstract class Vehicle defines an abstract method start(), which means it only declares the method but does not implement it. The subclass Car provides the actual implementation of start(). When a Car object is created and start() is called, the user sees only the simple action 'Car started' without knowing how it works inside. This separation allows changing the implementation later without affecting the user code. The execution table shows each step from defining the abstract class, creating the Car class, making an object, calling the method, and ending the program. Variables like myCar hold the Car object after creation. Key moments include understanding why abstraction forces implementation in subclasses and how it protects user code from changes. The visual quiz tests understanding of these steps and concepts.