Java за неделю. Вводный курс - стр. 43
Если говорить о готовом коде, то наследование значительно улучшает общую структуру, читаемость и надежность программы.
В языке Java запрещено множественное наследование. Подкласс может наследовать поля и методы только у одного суперкласса. В некоторых других языках, включая С++, подкласс может наследовать одновременно несколько суперклассов.
7.1 Создание подкласса
Для создания подкласса необходимо после его имени указать ключевое слово extends (расширяет) и далее указать имя суперкласса:
class ChildClass extends ParentClass {
// поля и методы подкласса
}
В результате подкласс ChildClass будет иметь те же поля и методы, что и суперкласс ParentClass, но к ним добавятся еще поля и методы из описания подкласса.
Объекты, созданные на основе подкласса, не зависят от объектов, созданных на основе суперкласса, и никак не влияют друг на друга.
В листинге 7.1 приведен пример использования суперкласса и подкласса для создания независимых объектов, обладающих разным набором методов.
Листинг 7.1 Создание подкласса на основе пользовательского суперкласса
// описание суперкласса
class MyParentClass {
// числовое поле суперкласса
int number=5;
// текстовое поле суперкласса
String text=«Hello»;
// методы суперкласса
void showText () {
System.out.println (text);
}
void showNumber () {
System.out.println (number);
}
}
// описание подкласса
class MyChildClass extends MyParentClass {
int sum (int a) {
return number+a;
}
}
public class Listing7_1 {
public static void main (String [] args) {
// создаем объект суперкласса
MyParentClass objParent=new MyParentClass ();
// создаем объект подкласса
MyChildClass objChild=new MyChildClass ();
// вызываем методы суперкласса
objParent.showNumber ();
objParent.showText ();
// вызываем методы подкласса
objChild.showNumber ();
objChild.showText ();
// вызываем дополнительный метод подкласса
int b=objChild.sum (12);
// выводим результат вызова метода на печать
System.out.println (b);
}
}
В данном примере мы описали класс MyParentClass, в котором определены два поля – целочисленное и текстовое, а также два метода для вывода этих полей на печать.
Допустим, что при использовании одного из объектов класса нам приходится регулярно суммировать некие числа со значением целочисленного поля number. Очевидно, что для этого необходимо добавить метод, которого нет в описании класса. Конечно, можно было бы переписать класс MyParentClass, добавив в него новый метод. Но в случае, когда класс проверен, отлажен и применяется во многих других программах, не следует редактировать его по любому поводу, рискуя внести ошибку или путаницу в готовый код.