using System;
using System.Collections.Generic;
abstract class Vehicle
{
public string Make { get; set; }
public string Model { get; set; }
public int Year { get; set; }
public Vehicle(string make, string model, int year)
{
Make = make;
Model = model;
Year = year;
}
public abstract double CalculateFuelEfficiency(); // Must be implemented by subclasses
public virtual void DisplayInfo()
{
Console.WriteLine($"{Year} {Make} {Model} - Fuel Efficiency: {CalculateFuelEfficiency()} MPG");
}
}
class Car : Vehicle
{
public Car(string make, string model, int year) : base(make, model, year) { }
public override double CalculateFuelEfficiency()
{
return 25.0; // Example value
}
}
class Motorcycle : Vehicle
{
public Motorcycle(string make, string model, int year) : base(make, model, year) { }
public override double CalculateFuelEfficiency()
{
return 45.0; // Example value
}
}
class Truck : Vehicle
{
public Truck(string make, string model, int year) : base(make, model, year) { }
public override double CalculateFuelEfficiency()
{
return 12.0; // Example value
}
}
class Program
{
static void Main(string[] args)
{
List vehicles = new List
{
new Car("Ford", "Mustang", 2020),
new Motorcycle("Harley", "Davidson", 2019),
new Truck("Volvo", "FH16", 2022)
};
foreach (var v in vehicles)
{
v.DisplayInfo(); // Polymorphic call
}
}
}