Welcome to an adventure into Kotlin's Abstract Classes, Interfaces, and Companion Objects. These elements are widely used in Kotlin's Object-Oriented Programming and allow for flexible code structures, much like blueprints for real-world entities.
Think of an abstract class as a "generic" real-world category - for instance, a vehicle. We have different types of vehicles, such as cars, trucks, and bikes, that share common characteristics. We can represent these common features in an abstract class called Vehicle
. Abstract classes are templates for other classes. They cannot be instantiated on their own, which means you cannot create an object of an abstract class. Instead, they must be subclassed by other "concrete" classes which then provide implementations for the abstract members.
The abstract class Vehicle
defines common functionality through abstract members, such as the move()
function and color
property, while also supporting concrete methods like description()
. Any class deriving from Vehicle
is required to implement these abstract members. Failing to implement all abstract members in a derived concrete class triggers a compilation error.
