Чтобы наследовать класс, достаточно просто вставить определение одного класса в другой с использованием ключевorо слова extends. В качестве иллюстрации рассмотрим короткий пример. Следующая программа создает суперкласс А и подкласс В. Обратите внимание на использование ключевого слова extends для создания подкласса класса А.
Общая форма объявления класса, который наследует от суперкласса, следующая:
class имя_подкласса extends имя_суперкласса
{
// тело класса
}
// суперкласс Nokia
class Nokia
{
// высота, ширина и площадь дисплея
int dh, dw, ds;
// метод, вычисляющий площадь дисплея
int Area()
{
return dw * dh;
}
}
// подкласс NokiaE93
class Nokia310 extends Nokia
{
// высота, ширина и площадь всего телефона
int th, dw, ds;
// метод, вычисляющий площадь телефона
int tArea()
{
return tw * th;
}
}
// входная точка приложения
class RunNokia
{
public static void main (String args[])
{
// при создании объекта используется конструктор по умолчанию
NokiaE93 nokiaE93 = new NokiaE93();
// задаем значения для переменных
nokiaE93.dh = 320;
nokiaE93.dw = 240;
nokiaE93.th = 118;
nokiaE93.tw = 55;
// вычисляем площадь дисплея
ds = nokia.dArea();
// вычисляем площадь телефона
dt = nokia.tArea();
}
}
Создав подкласс NokiaE93, вы получите доступ ко всем членам суперкласса Nokia, определенные как public. Используя оператор «.» (точка), вы открываете доступ к переменным и методам суперкласса. При создании объекта суперкласса, например Nokia nokiasuper = new Nokia(), объект созданного класса может пользоваться своими членами класса, но уже члены подкласса ему не доступны.
Иначе говоря, подкласс расширяет свой суперкласс, добавляя новые члены в подкласс, тем самым, подстраивая под себя новые, необходимые только подклассу, члены класса, оставляя за собой возможность использования членов суперкласса.
Суперкласс вправе иметь сколько угодно подклассов, например, в рассмотренном примере можно создать еще десяток-другой подклассов: NokiaE95, NokiaN80, NokiaN-Gage и так далее. Но каждый из подклассов может иметь только один суперкласс. Множественные наследования в языке Java не предусмотрены. Но каждый из подклассов может иметь свой подкласс, и такая цепочка наследования может длиться до разумной бесконечности.