супер () в Java - PullRequest
       67

супер () в Java

210 голосов
/ 22 сентября 2010

super() используется для вызова родительского конструктора?Пожалуйста, объясните super().

Ответы [ 15 ]

0 голосов
/ 27 декабря 2018

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

Этот super () автоматически вызывает цепочку конструкторов , начиная с верхней части иерархии классов и перемещаясь вниз по иерархии.

Если бы в иерархии классов программы было более двух классов , конструктор по умолчанию для высшего класса получил бы с именем first .

Вот пример этого:

class A {
    A() {
    System.out.println("Constructor A");
    }
}

class B extends A{

    public B() {
    System.out.println("Constructor B");
    }
}

class C extends B{ 

    public C() {
    System.out.println("Constructor C");
    }

    public static void main(String[] args) {
    C c1 = new C();
    }
} 

Приведенное выше будет выводить:

Constructor A
Constructor B
Constructor C
0 голосов
/ 21 апреля 2017

super - это ключевое слово.Он используется внутри определения метода подкласса для вызова метода, определенного в суперклассе.Частные методы суперкласса не могут быть вызваны.Только ключевое слово super может вызывать только открытые и защищенные методы.Он также используется конструкторами классов для вызова конструкторов его родительского класса.

Проверьте здесь для дальнейшего объяснения.

0 голосов
/ 21 октября 2015

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

Супер ключевое слово - это ссылочная переменная, которая используется для ссылки на родительский объект класса.

Зачем использовать супер ключевое слово в java?

Всякий раз, когда наследуется базаДанные класса в производном классе - это шанс получить неоднозначность, потому что может быть базовый класс и данные производного класса одинаковы, поэтому для различия этих данных необходимо использовать супер ключевое слово

Супер ключевое слово на уровне метода?

Супер ключевое слово также используется для вызова метода родительского класса.Ключевое слово super следует использовать в случае переопределения метода.

Когда использовать ключевое слово Super на уровне метода?

Использовать ключевое слово Super, когда имя метода базового класса и имя метода производного класса имеют одинаковые имена.

http://www.tutorial4us.com/java/java-super-keyword

0 голосов
/ 02 февраля 2015

Ключевое слово super можно использовать для вызова конструктора суперкласса и ссылки на член суперкласса

Когда вы вызываете super () с правамиВ качестве аргументов мы фактически называем конструктор Box , который инициализирует переменные ширина , высота и глубина , отнесенная к нему с помощью значений соответствующих параметров.Вам остается только инициализировать его добавленную стоимость.При необходимости теперь можно сделать переменные класса Box как private .Заполните поля приватного модификатора класса Box и убедитесь, что вы можете получить к ним доступ без проблем.

У суперкласса может быть несколько перегруженных конструкторов версий, поэтому вы можете вызвать метод super () с разными параметрами.Программа выполнит конструктор, который соответствует указанным аргументам.

public class Box {

    int width;
    int height;
    int depth;

    Box(int w, int h, int d) {
        width = w;
        height = h;
        depth = d;
    }

    public static void main(String[] args){
        HeavyBox heavy = new HeavyBox(12, 32, 23, 13);
    }

}

class HeavyBox extends Box {

    int weight;

    HeavyBox(int w, int h, int d, int m) {

        //call the superclass constructor
        super(w, h, d);
        weight = m;
    }

}
0 голосов
/ 04 октября 2010

Конструкторы В конструкторе вы можете использовать его без точки для вызова другого конструктора.super вызывает конструктор в суперклассе;this вызывает конструктор в этом классе:

public MyClass(int a) {
  this(a, 5);  // Here, I call another one of this class's constructors.
}

public MyClass(int a, int b) {
  super(a, b);  // Then, I call one of the superclass's constructors.
}

super полезно, если суперкласс должен инициализировать себя.this полезно, чтобы вы могли писать весь жесткий код инициализации только один раз в одном из конструкторов и вызывать его из всех других, гораздо более простых в написании конструкторов.

Методы В любом методе вы можете использовать его с точкой для вызова другого метода.super.method() вызывает метод в суперклассе;this.method() вызывает метод в этом классе:

public String toString() {
  int    hp   = this.hitpoints();  // Calls the hitpoints method in this class
                                   //   for this object.
  String name = super.name();      // Calls the name method in the superclass
                                   //   for this object.

  return "[" + name + ": " + hp + " HP]";
}

super полезен в определенном сценарии: если ваш класс имеет тот же метод, что и ваш суперкласс, Java предполагает, что вы хотите использовать тот же класс в своем классе;super позволяет вместо этого запросить метод суперкласса.this полезен только как способ сделать ваш код более читабельным.

...