Constructors on abstract types can be called only by derived types. Because public constructors create instances of a type, and you cannot create instances of an abstract type, an abstract type that has a public constructor is incorrectly designed.
abstract class Sample
{
public Sample() // non-compliant
{
}
}
abstract class Sample
{
protected Sample() // ok
{
}
}