The only reason for declaring a class as abstract is so that it can’t be instantiated . There are situations where you will have common functionality that is shared between a number of classes, but by itself that common functionality does not represent an object or represents an incomplete object.