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.

Добавить комментарий
  • Комментарии не найдены