<< ПредыдущаяОглавлениеСледующая >>


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 метод класса А

 



<< ПредыдущаяОглавлениеСледующая >>