Рубрики

Супер ключевое слово в Java

Ключевое слово super в java — это ссылочная переменная, которая используется для ссылки на объекты родительского класса. Ключевое слово «супер» вошло в картину с понятием наследования. Он в основном используется в следующих контекстах:

1. Использование super с переменными. Этот сценарий возникает, когда производный класс и базовый класс имеют одинаковые члены данных. В этом случае есть вероятность двусмысленности для JVM. Мы можем понять это более четко, используя этот фрагмент кода:

/ * Автомобиль базового класса * /

class Vehicle

{

    int maxSpeed = 120;

}

  
/ * подкласс Автомобиль-удлинитель * /

class Car extends Vehicle

{

    int maxSpeed = 180;

  

    void display()

    {

        / * печать maxSpeed базового класса (транспортное средство) * /

        System.out.println("Maximum Speed: " + super.maxSpeed);

    }

}

  
/ * Программа для проверки драйверов * /

class Test

{

    public static void main(String[] args)

    {

        Car small = new Car();

        small.display();

    }

}

Выход:

Maximum Speed: 120

В приведенном выше примере базовый класс и подкласс имеют член maxSpeed. Мы можем получить доступ к maxSpeed базового класса в sublcass, используя ключевое слово super.

2. Использование super с методами: используется, когда мы хотим вызвать метод родительского класса. Поэтому, когда родительский и дочерний класс имеют одинаковые именованные методы, для устранения неоднозначности мы используем ключевое слово super. Этот фрагмент кода помогает понять упомянутое использование ключевого слова super.

/ * Базовый класс Person * /

class Person

{

    void message()

    {

        System.out.println("This is person class");

    }

}

  
/ * Студент подкласса * /

class Student extends Person

{

    void message()

    {

        System.out.println("This is student class");

    }

  

    // Обратите внимание, что display () только в классе Student

    void display()

    {

        // вызовет или вызовет текущий метод класса message ()

        message();

  

        // вызовет или вызовет метод message () родительского класса

        super.message();

    }

}

  
/ * Программа для проверки драйверов * /

class Test

{

    public static void main(String args[])

    {

        Student s = new Student();

  

        // вызываем display () объекта Student

        s.display();

    }

}

Выход:

This is student class
This is person class

В приведенном выше примере мы видели, что если мы вызываем только метод message (), то вызывается текущий класс message (), но с использованием ключевого слова super можно также вызывать message () из суперкласса.

3 Использование super с конструкторами: ключевое слово super также можно использовать для доступа к конструктору родительского класса. Еще одна важная вещь заключается в том, что «супер» может вызывать как параметрические, так и непараметрические конструкторы в зависимости от ситуации. Ниже приведен фрагмент кода для объяснения вышеуказанной концепции:

/ * Персона суперкласса * /

class Person

{

    Person()

    {

        System.out.println("Person class Constructor");

    }

}

  
/ * Подкласс Студент, расширяющий класс Персона * /

class Student extends Person

{

    Student()

    {

        // вызывать или вызывать конструктор родительского класса

        super();

  

        System.out.println("Student class Constructor");

    }

}

  
/ * Программа для проверки драйверов * /

class Test

{

    public static void main(String[] args)

    {

        Student s = new Student();

    }

}

Выход:

Person class Constructor
Student class Constructor

В приведенном выше примере мы вызывали конструктор суперкласса, используя ключевое слово «super» через конструктор подкласса.

Другие важные моменты:

  1. Вызов super () должен быть первым оператором в конструкторе класса Derived (Student).
  2. Если конструктор не вызывает явно конструктор суперкласса, компилятор Java автоматически вставляет вызов в конструктор суперкласса без аргументов. Если суперкласс не имеет конструктора без аргументов, вы получите ошибку во время компиляции. У Object действительно есть такой конструктор, поэтому, если Object является единственным суперклассом, проблем нет.
  3. Если конструктор подкласса вызывает конструктор своего суперкласса, явно или неявно, вы можете подумать, что вызвана целая цепочка конструкторов, вплоть до конструктора Object. Это на самом деле так. Это называется конструкторская цепочка ..

Эта статья предоставлена Вишваджитом Шриваставой . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Супер ключевое слово в Java

0.00 (0%) 0 votes