인터페이스에 있는 메서드와 동일한 signature를 같는 메소드를 추상 클래스로 정의할 이유가 없습니다. concrete 파생 클래스들은 어느 쪽 메서드든 구현해야 합니다.
규칙을 어긴 코드
public interface Reportable {
String getReport();
}
public abstract class AbstractRuleReport implements Reportable{
public abstract String getReport(); // 규칙을 어긴 코드
// ...
}
If you like SONARKUBE, don’t forget to give me a star.