Основы наследования

Чтобы наследовать класс, достаточно просто вставить определение одного класса в другой с использованием ключевого слова extends. В качестве иллюстрации рассмотрим короткий пример. Следующая программа создает суперкласс А и подкласс в. Обратите внимание на использование ключевого слова extends для создания подкласса класса А.

// Простой пример наследования.
// Создание суперкласса.
class А {
int i, j;
void showij() {
System.out.println("i и j: " + i + " " + j);
}
}
// Создание подкласса путем расширения класса А.
class В extends А {
int k;
void showk() {
System.out.println ("k: " + k) ;
}
void sum() {
System.out.println ("i+j+k: " + (i+j+k));
class Simplelnheritance {
public static void main(String args[]) {
A superOb = new A();
В subOb = new В();
// Суперкласс может использоваться самостоятельно.
superOb.i = 10;
superOb.j = 20;
System.out.println("Содержимое superOb: ");
superOb.showij();
System.out.println();
/* Подкласс имеет доступ ко всем общедоступным членам своего суперкласса. */
subOb.i = 7;
subOb.j = 8;
subOb.k = 9;
System.out.println("Содержимое subOb: ");
subOb.showij();
subOb.showkO ;
System.out.println();
System.out.println("Сумма i, j и k в subOb:");
subOb.sum();
}
}

Эта программа создает следующий вывод:

Содержимое superOb: i и j : 10 20
Содержимое subOb: i и j : 7 8 k: 9
Сумма i, j и k в subOb: i+j+k: 24

Как видите, подкласс В включает в себя все члены своего суперкласса А. Именно поэтому subOb имеет доступ к переменным i и j и может вызывать метод showij (). Кроме того, внутри метода sum () возможна непосредственная ссылка на переменные i и j, как если бы они были частью класса В.

Несмотря на то что А — суперкласс класса В, он также является полностью независимым, самостоятельным классом. То, что класс является суперклассом подкласса, не означает невозможность его самостоятельного использования. Более того, подкласс может быть суперклассом другого подкласса.

Общая форма объявления класса, который наследует от суперкласса, следующая:

class имя_подкласса extends имя_суперкласса. {
// тело класса
}

Для каждого создаваемого подкласса можно указывать только один суперкласс. Java не поддерживает наследование нескольких суперклассов в одном подклассе. Как было сказано, можно создать иерархию наследования, в которой подкласс становится суперклассом другого подкласса. Однако никакой класс не может быть собственным суперклассом.