Details
-
Type:
Code Smell Detection
-
Status: Active
-
Resolution: Unresolved
-
Labels:
-
Message:
-
Highlighting:
- primary location: the public modifier
- secondary location: the abstract keyword
-
List of parameters:
-
Default Severity:Major
-
Impact:Low
-
Likelihood:High
-
Default Quality Profiles:Sonar way
-
Covered Languages:Java
-
Remediation Function:Constant/Issue
-
Constant Cost:2min
-
Analysis Level:Syntactic Analysis
-
Analysis Scope:Main Sources
Description
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
public abstract class AbstractClass1 { public AbstractClass1 () { // Noncompliant, has public modifier // do something here } }
Compliant Solution
public abstract class AbstractClass2 { protected AbstractClass2 () { // do something here } }
Attachments
Issue Links
- is implemented by
-
SONARJAVA-3542 Rule S5993 Constructors of an "abstract" class should not be declared "public"
-
- Closed
-
- links to