Is there a use case/necessity (from design or implementation perspective) not to make a super class abstract?Are there any differences in the programming language in use?To make an example:abstract class A { /*...*/ }class B extends A { /*...*/ }My question is about A: When am I not allowed to use abstract or can I state the Michael Dorner rule: ;)A good design comes always with a abstract (and not a concrete) superclass.
When not to use an abstract super class?
object oriented;object oriented design;abstract class
All the time, you can't avoid it (In Java)Every class has a non-abstract, non-final superclass: Object.Rightly or wrongly the designers of Java felt that there were some special actions that should always be available, and always have a default implementation. Most notably Equals and GetHashCode allow anything to be put into containers and then searched for, by identity.