В более ранних версиях java не было возможно beacuase, у вас были абстрактные классы, чтобы использовать только конкретные и объявленные методы, но. Java 8 вводит новую функцию «Метод по умолчанию» или (Защитники), которая позволяет разработчику добавлять новые методы к интерфейсам без нарушения существующей реализации этого интерфейса. Он обеспечивает гибкость, позволяющую интерфейс определять реализацию, которая будет использоваться по умолчанию в ситуации, когда конкретный класс не может обеспечить реализацию для этого метода.
Пусть рассмотрит небольшой пример, чтобы понять, как это работает:
public interface oldInterface {
public void existingMethod();
default public void newDefaultMethod() {
System.out.println("New default method"
" is added in interface");
}
}
Следующий класс будет успешно компилируется в Java JDK 8
public class oldInterfaceImpl implements oldInterface {
public void existingMethod() {
// existing implementation is here…
}
}
Почему УСПЕШНЫЙ метод? Реинжиниринг существующей структуры JDK всегда очень сложный. Изменение одного интерфейса в JDK-инфраструктуре разбивает все классы, расширяющие интерфейс, что означает, что добавление любого нового метода может сломать миллионы строк кода. Поэтому методы по умолчанию введены в качестве механизма для расширения интерфейсов с обратной совместимостью.
ПРИМЕЧАНИЕ:
Однако мы можем achive это назад compatability.but его всегда рекомендуется использовать интерфейсы с delarations только то, что они лучше всего использовать для.
Для простого примера, если у вас есть interface Human_behaviour
вы можете использовать все действия этого интерфейса, как to_Walk();
to_Eat()
, to_Love()
, to_Fight()
сказать, например, в каждом классе, реализующем уникальным образом для каждого человека объекта .like
Один человек может сражаться с помощью Мечей и другого объекта, используя оружие и так далее. Таким образом, интерфейс является благом, но всегда может использоваться в соответствии с потребностями.
Вы говорите о применении метода 'default' метода? Нет другой возможности добавить * content * к методу в интерфейсах. – Zabuza
http://www.tutorialspoint.com/java8/java8_default_methods.htm ... upvoted, потому что я не мог найти дубликат на SO. –
Необходимо регулярно избегать использования методов по умолчанию IMHO, как для хорошей практики, и может сделать отладку немного жесткой, и если вы действительно хотите архивировать, что вы можете пойти с абстрактными классами, поскольку они обеспечивают такую же функциональность –