package org; import org.model.*; import org.behavior.Serviceable; import org.util.*; public class Main{ public static void main(String[] args) { // Creating instances for each car type with realistic values ElectricCar tesla =new ElectricCar("Tesla", "Model S", 2022, 9000, 5, 100, 45); GasCar toyota= new GasCar("Toyota", "Corolla", 2018, 15000, 5, 60, "Petrol"); SportsCar ferrari =new SportsCar("Ferrari", "F8 Tributo", 2021, 6000, 2, 40, "Petrol", 2.9); //Demonstrating polymorphism by storing different subclasses in a Vehicle array Vehicle[] vehicles = { tesla, toyota, ferrari }; // Looping through vehicles to display basic inherited info System.out.println("--- Basic Vehicle Info ---"); for (Vehicle v : vehicles) { v.basicInfo(); System.out.println(); } //Using the inspector utility to perform type-checking with instanceof System.out.println("--- Vehicle Inspection ---"); for (Vehicle v : vehicles) { VehicleInspector.inspect(v); System.out.println(); } // Demonstrating interface-based polymorphism by storing cars in a Serviceable array Serviceable[] serviceables = { tesla, toyota, ferrari }; //Iterating through serviceables, casting to Vehicle to check mileage limits, and performing services System.out.println("--- Service Management System ---"); for (Serviceable s : serviceables) { Vehicle v = (Vehicle) s; if (s.needsService(v)) { System.out.println(v.getBrand() + " " + v.getModel() + " needs service."); s.performService(); } else { System.out.println(v.getBrand() + " " + v.getModel() + " is in good condition. No service needed."); } System.out.println(); } //Final workshop completion message System.out.println("=== Workshop Completed ==="); } }