What are abstract classes in java?

Cannot be instantiated, can be subclassed.

Use to represent common parts of subclasses.

For instance, Animal class can exist as an abstract class of Cat, Dog, Horse, Tiger

If a class has an Abstract Method (Java) it becomes an abstract class since it is impossible to create objects with an incomplete class definition.

Their type can be referenced.

In Java, even without abstract methods we can still declare as abstract class.

Subclasses can be abstract as well.