Вводный курс. Язык программирования Java
- Вводный курс. Язык программирования Java
- Просмотров: 2339
16. Наследование
Наследование - создание нового класса на базе уже имеющегося, или базового класса. Принцип наследования состоит в том, что элементы данных и методы базового класса автоматически становятся элементами данных нового класса.
Пусть имеется класс A. Назовем его базовым
public class A {
//поля
int a;
int b;
//конструктор
public A(int A, int B)
{
a=A; b=B;
}
//метод
public void methodA(){
System.out.println("a="+a+ "b="+b);
}
}
На базе класса A построим дочерний или производный класс B. Для этого в определении класса B после имени класса записывается ключевое слово extends и затем класс, который B наследует:
public class B extends A{
int c;
int d;
public B(int A, int B, int C, int D)
{
super(A,B);
c=C;
d=D;
}
public void methodB() {
//вызов метода родительского класса
super.methodA();
System.out.println("c="+c+ "d="+d);
//доступ к родительскому полю
super.a= c;
}
}
Термин "наследование" означает, что класс B обладает всеми свойствами класса A, он их унаследовал. Объект класса B кроме собственных данных и методов будет иметь все данные и методы базового класса A. В Java класс может иметь только одного родителя. Множественное наследование не допускается.
При записи конструктора класса B используется ключевое слово super. Использование слова super() в конструкторе (обратите внимание на круглые скобки) означает вызов конструктора базового класса. Вызов конструктора родителя записывается первым оператором и затем уже записываются остальной части тела конструктора производного класса.
Используя ключевое слово super можно вызвать метод родительского класса
//вызов метода родительского класса
super.methodA();
или получить доступ к полю родительского класса.
//доступ к родительскому полю
super.a= c;
При этом родительский метод и соответственно поле должны иметь уровень доступа по умолчанию (пакетный) или public.
Формат наследования:
<мд> class <имя класса> extends <имя родителя> {
поля;
конструкторы
методы классов
методы объекта
}
В Java класс может иметь только одного родителя. Множественное наследование не допускается.
Правила наследование конструкторов
При создании конструктора производного класса:
- сначала вызывается конструктор базового класса, а затем вызывается конструктор текущего класса;
- для вызова конструктора базового класса используется ключевое слово super
suреr(список параметров);
- если базовый класс имеет несколько конструкторов, то необходимый указывается при определении конструктора производного класса;
- если конструктор базового класса имеет параметры, то они включаются в список параметров производного класса.
- Если явной вызов конструтора родителя отсутствует, компилятор автоматически помещает в первой строке конструктора обращение к методу super().
- Оператор super() всеrда должен быть первым выполняемым оператором внутри конструктора дочернего класса.
- Поля родительского класса могут быть private.
Используя ключевое слово super можно вызвать метод или поле родительского класса, если оно имеет пакетный уровень доступа или паблик public.