У меня есть один общий метод, который мне нужно использовать в нескольких классах только с одним вызовом вызывающего класса. Так что я вижу, я могу назвать это двумя способами.Аннотация класс или интерфейс: JAVA?
public abstract class TestAbstractClass {
void commonMethod(){
System.out.println("Calling common method : TestAbstractClass");
}
}
вызова класса:
public class RunApplication extends TestAbstractClass{
public void testMethod(){
commonMethod();
}
}
[OR]
Использование Java 8 особенностью метода по умолчанию в интерфейсе.
public interface TestInterface {
default void commonMethod(){
System.out.println("Calling common method : TestInterface");
}
}
вызова класс:
public class RunApplication implements TestInterface{
public void testMethod(){
commonMethod();
}
}
Они оба прекрасно работают для меня, Но что лучше подход, абстрактный класс с неабстрактными методами или интерфейса с методом по умолчанию.
Есть аргументы в пользу поддержки обоих. Лучше всего посмотреть на различия. Например, если вы когда-либо захотите, чтобы дочерний класс наследовал другой класс, расширение абстрактного класса - это не то, что вы хотите сделать. – Stultuske
Такие вопросы не имеют смысла при переполнении стека - ответы действительно зависят от конкретной проблемы, которую вы должны решить. Здесь нет общего «того или другого». – GhostCat
Вопрос также в том, что этот метод настолько сильно переплетается с остальными классами, что он должен быть в интерфейсе или абстрактном классе. Возможно, это должен быть статический метод, или он должен быть в отдельном классе, из которого вы создаете поля в других классах. –