An abstract class is a class that cannot be used to create objects directly.
It serves as a base class for other classes and is used to define common structure and behavior.
An abstract method is a method without a body.
Any class that inherits from an abstract class must provide an implementation for all abstract methods.
Abstract classes can also contain normal methods with implementations.
These methods can be reused by all child classes.
You cannot create an object of an abstract class directly.
Instead, you create objects of classes that inherit from it.
Abstract classes can have constructors, which are called when a subclass object is created.
This is useful for initializing shared data.
Both abstract classes and interfaces are used for abstraction, but they have key differences.
Abstract classes help you define a common structure while allowing flexibility in implementation.
Different shapes can share a base structure but calculate or draw differently.
Create an abstract class Shape with a Draw() method. Then create Circle and Rectangle classes that implement it.