No, They are not obsolete . In fact, there is an obscure but fundamental difference between Abstract Classes/Methods and Interfaces. if the set of classes in which one of these has to be used have a common behaviour that they share (related classes, i mean), then go for Abstract classes/methods.