There are different criteria used for creating abstract classes and interfaces in dotNET. For instance, interfaces describe contracts that specify methods, properties, and events. Abstract classes define a common blueprint for a group of classes.