мы не можем объявлять абстрактные методы в интерфейсе, как защищены и defaul
цель интерфейса является просто объявить контракт. ваш клиент выполнит его, и для этого он должен быть public
.
также поле в интерфейсе public
static
final
по умолчанию, общественности вы получили, статические, так как он не может быть инстанцированной без реализации и не должен быть унаследовано также.
Update: по вашему вопросу
вы хотите применить некоторые строгие ограничения, которые ваш реализатор не может видеть ..т, что является использованием абстрактного метода в абстрактном классе, который должен быть реализован по какому-либо конкретному классу в иерархии наследования ... то никто не будет конкретный класс
public class BaseAbstractClass {
private Connection getConnection(){
//somecode
}
public boolean save(){
//get connection and do something
//return ;
}
//your implementor is left to implement it , he can use save method but can'ge see what it does i mean i doesn't have access to getConnection
public abstract void saveEntity();
}
Метод abstrct в абстрактном классе также имеет контракт с подклассами, которые будут давать реализацию абстрактного метода в абстрактном классе ... но они могут объявлять как защищенные и по умолчанию – saravanan
, где разница между интерфейсом и абстрактным классом, интерфейсом являются чистым контрактом, где абстрактный класс может иметь некоторую общую строгую реализацию –
, но у меня есть путаница. Я знаю, что класс abstratc может иметь как абстрактные методы, так и не абстрактные методы (реализованы), но интерфейс представляет собой 100% абстрактный класс. случаи, когда кто-то собирается реализовать абстрактные методы, иначе они будут помечены как abstarct..but абстрактные классы могут объявить свой абстрактный метод как защищенный и default ..why – saravanan