I am making a Bicycle interface acting as a blueprint for all types of bikes.
I have multiple classes that implements the Bicycle interface, classes such as BMX, MountainBike, RoadBike, MotorBike...etc.
Now, I understand that interfaces are one way to force each of the classes that implement it to have multiple things like String seats, double wheelDimensions, double topSpeed, int gears... These are some of the things I want to force all the classes to have when the Bicycle interface is implemented.
Is interface the right approach or is it abstraction? Because when I try to declare a String (for example: String seat) in the interface, it says it must be instantiated. I want the classes to instantiate the seat and not the interface. Because each class will have different type of seats.
I was under the assumption that interfaces are a way to force classes that implement it with the things the interface wants?