Книга: Основы программирования на Java
7.16. Абстрактные классы
7.16. Абстрактные классы
Бывают ситуации, когда нужно определить класс, в котором задана структура какой-либо абстракции, но полная реализация всех методов отсутствует. В таких случаях вы можете с помощью модификатора типа abstract объявить, что некоторые из методов обязательно должны быть замещены в подклассах. Любой класс, содержащий методы abstract, также должен быть объявлен как abstract. Поскольку у таких классов отсутствует полная реализация, их представителей нельзя создавать с помощью оператора new. Кроме того, нельзя объявлять абстрактными конструкторы и статические методы. Любой подкласс абстрактного класса либо обязан предоставить реализацию всех абстрактных методов своего суперкласса, либо сам должен быть объявлен абстрактным,
abstract class А
{
abstract void callme();
void metoo() {
System.out.println("Вызван metoo метод класса A");
}
}
class В extends A {
void callme() {
System.out.println("Вызван callme метод класса В");
}
}
class Abstract {
public static void main(String args[]) {
A a = new B();
a.callme();
a.metoo();
}
}
В нашем примере для вызова реализованного в подклассе класса А метода callme и реализованного в классе А метода metoo используется динамическое назначение методов, которое мы обсуждали раньше,
Вызван callme метод класса В
Вызван metoo метод класса А
- 7.1. Переменные класса
- 7.2. Оператор new
- 7.3. Объявление методов
- 7.4. Вызов метода
- 7.5. Скрытие переменных
- 7.6. Конструкторы
- 7.7. Совмещение методов
- 7.8. Ссылка this
- 7.9. Наследование
- 7.10. Ссылка super
- 7.11. Замещение методов
- 7.12. Динамическое назначение методов
- 7.13. Директива final
- 7.14. Деструкторы
- 7.15. Статические методы
- 7.16. Абстрактные классы
- 9.7.4. Иерархии классов и абстрактные классы
- ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ НА JAVA 7. КЛАССЫ
- Абстрактные типы данных и скрытие информации
- Абстрактные предусловия
- 9.2. Классы и конструкторы
- 9.7. Подклассы
- Абстрактные классы
- 9.1. Классы и прототипы
- Классы сертификатов
- Статические классы
- Абстрактные базы как двоичные интерфейсы
- 9.8. Классы в ECMAScript 5