Abstraction : Hides the implementation details of your methods. Provides a base to variations in the application which can grow over a period of time. Abstraction is virtual class design. Before actually defining class, developer will think about what all properties, methods and event will be there in my class. Example : public abstract class Automobile { //Properties public int DoorCount { .. } public string EngineType { .. } public float Height { .. } public float GasTankSize { .. } public float WheelBase { .. } public float WheelSize { .. } //Abstract Properties public abstract string BodyType { get; } //Methods public float CalculateFuelEfficiency(int lastMileage); } The Automobile class is the interface, in that it defines an interface that classes will derive from. You can't directly instantiate it through new Automobile() because it's not an implem...