This rule is deprecated, and will eventually be removed.

## Why is this an issue?

With Java 8’s "default method" feature, any abstract class without direct or inherited field should be converted into an interface. However, this change may not be appropriate in libraries or other applications where the class is intended to be used as an API.

Note that this rule is automatically disabled when the project’s `sonar.java.source` is lower than `8`.

### Noncompliant code example

    public abstract class Car {
      public abstract void start(Environment c);

      public void stop(Environment c) {
        c.freeze(this);
      }
    }

### Compliant solution

    public interface Car {
      public void start(Environment c);

      public default void stop(Environment c) {
        c.freeze(this);
      }
    }