When we wish to commit a programmer (either ourselves or someone else) to writing a specific class method, but we only know the name of the method and not the details of how it should be implemented, we use abstract classes. For instance, consider circles, rectangles, and octagons.