== Why is this an issue?

Abstract classes should not have public constructors. Constructors of abstract classes can only be called in constructors of their subclasses. So there is no point in making them public. The ``++protected++`` modifier should be enough.


=== Noncompliant code example

[source,java]
----
public abstract class AbstractClass1 {
    public AbstractClass1 () { // Noncompliant, has public modifier
        // do something here
    }
}
----


=== Compliant solution

[source,java]
----
public abstract class AbstractClass2 {
    protected AbstractClass2 () {
        // do something here
    }
}
----


ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

=== Message

* Primary message: Change the visibility of this constructor to "protected".
* Secondary message: This class is "abstract".


=== Highlighting

* primary location: the ``++public++`` modifier
* secondary location: the ``++abstract++`` keyword


endif::env-github,rspecator-view[]
