‘abstract’ — модификатор отсутствия доступа
Модификатор отсутствия доступа — это ключевое слово, которое изменяет поведение класса Java по умолчанию.
_ ‘Аннотация’ _ модификатор может быть применен к
1) «абстрактный» — модификатор метода
- Когда ‘Аннотация‘ ставится префикс перед объявлением метода, тогда метод становится абстрактным:
public abstract void execute();
- Метод с пустым телом не считается абстрактным методом.
public void execute(){}
- Абстрактный метод должен появляться только в абстрактном классе.
abstract class Perform{ int x, y; public abstract String execute();
}
Абстрактные методы будут реализованы производными классами.
public class Action extends Perform{ public String execute(){
System.out.println("I am executing");
}
}
- Если производный класс не реализует абстрактный метод, то этот класс также должен быть объявлен как абстрактный класс.
public abstract class Action extends Perform{ public abstract String execute();
}
- Абстрактные методы также могут использоваться в перечислениях.
enum Model{
BENZ{
public String getModel(){ return "BENZ"; }
},
LAMBORGHINI{
public String getModel(){ return "LAMBORGHINI"; }
},
FERRARI{
public String getModel(){ return "FERRARI"; }
},
BUGATTI{
public String getModel(){ return "BUGATTI"; }
}
public abstract String getModel();
}
2) «абстрактный» — модификатор класса
- Когда ‘Аннотацияключевое слово ставится перед определением класса, тогда класс становится абстрактным классом.
abstract class Perform{
}
- Абстрактный класс может иметь или не иметь абстрактных методов.
abstract class Perform{
int x, y;
public abstract String execute();
}
(или же)
abstract class Perform{
int x, y;
public String execute();
}
- Абстрактный класс не может быть создан. Если предпринимается попытка создать экземпляр абстрактного класса, «Выполнение является абстрактным, не может быть реализовано» вылетает ошибка компиляции
3) «abstract» — модификатор интерфейса
- Каждый интерфейс неявно абстрактен. Оба приведенных ниже определения одинаковы.
interface Model{
}
(или же)
abstract interface Model{
}
- Явное использование абстрактного ключевого слова для интерфейса излишне.
- Таким образом, модификатор интерфейса abstract устарел и не рекомендуется использовать в новых программах.