Частные методы не имеют большого смысла в интерфейсе, поскольку основная идея интерфейса - предоставить интерфейс для взаимодействия объектов друг с другом. Поскольку закрытые методы не видны другим объектам, они не могут использовать их для общения и отправки сообщений.
Если вы хотите использовать закрытые методы, я бы посоветовал вам использовать abstract class
.
В итоге:
В: Поэтому мой вопрос заключается в том, что я не могу создавать частные методы в интерфейсе, не определив их в интерфейсе .
Именно в этом суть interface
; они определяют API publi c, не заботясь о внутренней реализации.
Q: Что произойдет, если я создаю в классе закрытый метод, но не переопределяю из Dao?
Если вы объявите метод в abstract class
и не переопределите его, могут произойти две вещи:
- Метод был помечен как
abstract
: вы получите ошибку компиляции, говорящую что ваш класс реализации не удовлетворяет спецификации родительского класса.
1.1 Если вы объявили метод в интерфейсе и не реализовали его, вы получите ту же ошибку, сообщающую, что ваша реализация класс не удовлетворяет интерфейсу, который он пытается реализовать.
Метод был
public
и не помечен как
final
в
abstract class
: вы можете или не можете переопределить его. Если вы не переопределите его, будет использоваться реализация родительского класса; если вы полностью его переопределите, код вашего дочернего класса будет выполнен. Если вы вызовете super.method () и затем свою реализацию, оба кода будут выполнены.