I have to take a design decision. I have a super class that is being inherited by a couple of classes. Working fine.
If I declare it Abstract, it works as it is. I understand that one cannot instantiate Abstract class, but I don't need to do that.
Is it ok to declare it Abstract?
Classes are defined to be abstract if you know that instances cannot or should not be created from them. Like the class, Animal, should be abstract because we cannot create an animal with no information about it. But, we can create a Dog, which is a subclass of Animal. A family of classes containing abstract classes are usually designed so to prevent illegal usage and logical errors.
Unless you have one or more abstract methods there isn't much point in declaring it abstract.
For discussion see Abstract Methods and Classes.
I am afraid I would disagree. Even if there are no abstract methods there may be a point in declaring it abstract. As Tim says the point of abstract is that the class cannot ( in the case of abstract methods) or should not be instantiated directly. I may choose to have a super class that has only concrete methods that will be inherited by, and used by, sub classes but I do not wish to allow the superclass to be instantiated directly, i.e. it is an architectural decision.
Very interesting discussion indeed.
2 different points are made ... and both makes a lot of sense.