Абстрактные классы во многом подобны интерфейсам. От обычных классов, они отличаются тем, что у их методов (одного или нескольких) нет операторов тела. Тогда такой метод объявляется абстрактным с помощью слова abstract. Класс, где существует хотя бы один абстрактный метод также должен быть объявлен абстрактным. В Java существует несколько абстрактных классов. Один из примеров - классы по реализации входных/выходных потоков.
Все классы, являющиеся подклассами абстрактного класса, должны дать реализацию (то есть тело) всем абстрактным методам абстрактного класса, или сами должны быть объявлены абстрактными.