== Why is this an issue? The purpose of an abstract class is to provide some heritable behaviors while also defining methods which must be implemented by sub-classes. A class with no abstract methods that was made abstract purely to prevent instantiation should be converted to a concrete class (i.e. remove the ``++abstract++`` keyword) with a private constructor. A class with only abstract methods and no inheritable behavior should be converted to an interface. === Noncompliant code example [source,text] ---- public abstract class Animal { // Noncompliant; should be an interface abstract void move(); abstract void feed(); } public abstract class Color { // Noncompliant; should be concrete with a private constructor private int red = 0; private int green = 0; private int blue = 0; public int getRed() { return red; } } ---- === Compliant solution [source,text] ---- public interface Animal { void move(); void feed(); } public class Color { private int red = 0; private int green = 0; private int blue = 0; private Color () {} public int getRed() { return red; } } public abstract class Lamp { private boolean switchLamp=false; public abstract void glow(); public void flipSwitch() { switchLamp = !switchLamp; if (switchLamp) { glow(); } } } ----