16. Наследование

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.

instagram Одноклассники Вконтакте Канал на YouTube whatsapp
© 2015-2019 Университетский центр компьютерного обучения "Турбо"
г. Майкоп, ул. Ветеранов, 228, тел.: 8 (8772) 57-11-00, 8(918)213-95-94