super() in Java

Lesezeit: 6 Minuten

super in Java
Mohan

Ist super() verwendet, um den übergeordneten Konstruktor aufzurufen? Bitte erkläre super().

  • Muss genauer sein oder einfach die Dokumentation lesen …

    – Manuel

    21. April 2015 um 15:37 Uhr


  • Überprüfen Sie im Zusammenhang mit dem Aufruf von super() auch diese Antwort. stackoverflow.com/questions/34349164/…

    – Visrant

    23. Dezember 2015 um 8:38 Uhr

super in Java
pakore

super() ruft den übergeordneten Konstruktor ohne Argumente auf.

Es kann auch mit Argumenten verwendet werden. Dh super(argument1) und es ruft den Konstruktor auf, der 1 Parameter vom Typ akzeptiert argument1 (falls vorhanden).

Es kann auch verwendet werden, um Methoden vom übergeordneten Element aufzurufen. Dh super.aMethod()

Weitere Informationen und Tutorials Hier

  • HINWEIS: Im ersten Fall muss die übergeordnete Klasse einen Konstruktor ohne Argumente haben, der fehlschlägt, was einen Kompilierungsfehler auslöst.

    – KNU

    6. August 2014 um 10:01 Uhr

  • Nit: Die Parent/Child-Terminologie ist nicht sehr gut für Klassenhierarchien. (Ein Kind ist nicht ein Vater.)

    – aiobe

    22. Dezember 2015 um 14:59 Uhr

  • Gibt es Einschränkungen, wo Super verwendet werden kann?

    – Aaron Franke

    12. Dezember 2017 um 0:13 Uhr

  • @VivekChavda, sicher ein Kind kann ein Elternteil sein, genau wie ein Schüler ein Lehrer sein kann usw. Aber ich denke, Sie verstehen den Unterschied im Vergleich zu Animal -> Dog zum Beispiel. Ein Hund ist Notwendig ein Tier. Elternteil/Kind ist typischerweise a hat ein Beziehung (“Ein Elternteil hat ein Kind”), während ein Tier/Hund ein ist “ist ein” Beziehung. Sehen aioo.be/2016/06/29/ein-kind-ist-nicht-immer-ein-elternteil.html

    – aiobe

    16. Dezember 2017 um 13:50 Uhr

  • @AaronFranke, “Gibt es Einschränkungen, wo Super verwendet werden kann?” — Jawohl, super(...) darf nur als erste Anweisung in einem Konstruktor verwendet werden.

    – aiobe

    16. Dezember 2017 um 13:56 Uhr

1646321230 287 super in Java
Simon Gates

Einige Fakten:

  1. super() wird verwendet, um den unmittelbaren Elternteil anzurufen.
  2. super() kann mit Instanzmitgliedern verwendet werden, dh Instanzvariablen und Instanzmethoden.
  3. super() kann innerhalb eines Konstruktors verwendet werden, um den Konstruktor der übergeordneten Klasse aufzurufen.

OK, nun lassen Sie uns diese Punkte praktisch umsetzen super().

Schauen Sie sich den Unterschied zwischen Programm 1 und 2 an. Hier beweist Programm 2 unsere erste Aussage von super() auf Java.

Programm 1

class Base
{
    int a = 100;
}

class Sup1 extends Base
{
    int a = 200;
    void Show()
    {
        System.out.println(a);
        System.out.println(a);
    }
    public static void main(String[] args)
    {
        new Sup1().Show();
    }
}

Ausgabe:

200
200

Sehen Sie sich jetzt Programm 2 an und versuchen Sie, den Hauptunterschied herauszufinden.

Programm 2

class Base
{
    int a = 100;
}

class Sup2 extends Base
{
    int a = 200;
    void Show()
    {
        System.out.println(super.a);
        System.out.println(a);
    }
    public static void main(String[] args)
    {
        new Sup2().Show();
    }
}

Ausgabe:

100
200

In Programm 1 war die Ausgabe nur von der abgeleiteten Klasse. Es konnte weder die Variable der Basisklasse noch der Elternklasse drucken. Aber in Programm 2 haben wir verwendet super() mit Variable a beim Drucken seiner Ausgabe und anstatt den Wert der Variablen zu drucken a der abgeleiteten Klasse druckte es den Wert der Variablen a der Basisklasse. Das beweist es also super() wird verwendet, um den unmittelbaren Elternteil anzurufen.

OK, sehen Sie sich jetzt den Unterschied zwischen Programm 3 und Programm 4 an.

Programm 3

class Base
{
    int a = 100;
    void Show()
    {
        System.out.println(a);
    }
}

class Sup3 extends Base
{
    int a = 200;
    void Show()
    {
        System.out.println(a);
    }
    public static void Main(String[] args)
    {
        new Sup3().Show();
    }
}

Ausgabe:

200

Hier ist die Ausgabe 200. Als wir anriefen Show()der Show() Funktion der abgeleiteten Klasse aufgerufen wurde. Aber was sollen wir tun, wenn wir die anrufen wollen Show() Funktion der Elternklasse? Schauen Sie sich Programm 4 für die Lösung an.

Programm 4

class Base
{
    int a = 100;
    void Show()
    {
        System.out.println(a);
    }
}

class Sup4 extends Base
{
    int a = 200;
    void Show()
    {
        super.Show();
        System.out.println(a);
    }
    public static void Main(String[] args)
    {
        new Sup4().Show();
    }
}

Ausgabe:

100
200

Hier erhalten wir zwei Ausgaben, 100 und 200. Wenn die Show() Funktion der abgeleiteten Klasse aufgerufen wird, ruft sie zunächst die auf Show() Funktion der übergeordneten Klasse, denn innerhalb der Show() Funktion der abgeleiteten Klasse, wir nannten die Show() Funktion der übergeordneten Klasse, indem Sie die super Schlüsselwort vor dem Funktionsnamen.

  • Warum haben Sie Ihre Quellcode-Beispiele nicht eingerückt? Gibt es einen bestimmten Grund?

    – erikbstack

    22. September 2010 um 8:23 Uhr


  • NEIN erikb, ich möchte die Verwendung von super() wissen. Im Folgenden werde ich es nur tun

    – Mohan

    22. September 2010 um 9:32 Uhr

  • In meiner Basisklasse überlade ich den Konstruktor mit einem, zwei, … Argumenten

    – Mohan

    22. September 2010 um 9:35 Uhr

  • aber in meiner abgeleiteten Klasse verwende ich super() ohne Argumente. Was passiert dann, wenn automatisch ein Standardkonstruktor einer Basisklasse aufgerufen wird?

    – Mohan

    22. September 2010 um 9:36 Uhr

  • super() ist kein Stichwort. Es ist ein Konstruktoraufruf. super ist ein Schlüsselwort, und #1 und #2 machen nur mit dieser Definition Sinn.

    – Benutzer207421

    23. Juni 2017 um 10:06 Uhr

1646321230 388 super in Java
aiobe

Quellartikel: Java: super() aufrufen


Jawohl. super(...) ruft den Konstruktor der Oberklasse auf.

Illustration:

Geben Sie hier die Bildbeschreibung ein

Alleinstehendes Beispiel:

class Animal {
    public Animal(String arg) {
        System.out.println("Constructing an animal: " + arg);
    }
}

class Dog extends Animal {
    public Dog() {
        super("From Dog constructor");
        System.out.println("Constructing a dog.");
    }
}

public class Test {
    public static void main(String[] a) {
        new Dog();
    }
}

Drucke:

Constructing an animal: From Dog constructor
Constructing a dog.

  • In meiner Basisklasse überlade ich den Konstruktor mit einem, zwei, … Argumenten in meiner abgeleiteten Klasse verwende ich super() ohne Argumente. Was passiert dann, wenn automatisch ein Standardkonstruktor einer Basisklasse aufgerufen wird?

    – Mohan

    22. September 2010 um 9:39 Uhr

  • Jawohl. Wenn Sie anrufen super() Es ruft den Konstruktor der Oberklasse auf, die keine Argumente akzeptiert. In ähnlicher Weise wird der 1-Argument-Konstruktor aufgerufen, wenn Sie dies tun super(arg1)und so weiter.

    – aiobe

    22. September 2010 um 9:41 Uhr

  • Wenn in der Basisklasse kein Konstruktor ohne Argument vorhanden war, was passiert, wenn die abgeleitete Klasse super() aufruft?

    – Mohan

    22. September 2010 um 12:08 Uhr

  • Gar nichts. Es wird nicht kompiliert. Wenn Sie selbst einen Konstruktor bereitstellen, wird der automatische/Standard-/kein-Argument-Konstruktor daher nicht generiert super() wird kein gültiger Anruf sein.

    – aiobe

    22. September 2010 um 12:19 Uhr

1646321232 676 super in Java
Heinzi

Wird super() verwendet, um den übergeordneten Konstruktor aufzurufen?

Jawohl.

Bitte erklären Sie Super().

super() ist eine spezielle Verwendung von super -Schlüsselwort, mit dem Sie einen parameterlosen übergeordneten Konstruktor aufrufen. Im Allgemeinen ist die super Das Schlüsselwort kann verwendet werden, um überschriebene Methoden aufzurufen, auf verborgene Felder zuzugreifen oder den Konstruktor einer Oberklasse aufzurufen.

Hier ist die offizielles Tutorial

Den Superkonstruktor ohne Argumente zu nennen, ist nur eine Verschwendung von Bildschirmplatz und Programmierzeit. Der Compiler generiert genau denselben Code, ob Sie ihn schreiben oder nicht.

class Explicit() {
    Explicit() {
        super();
    }
}

class Implicit {
    Implicit() {
    }
}

1646321232 735 super in Java
Bozo

Jawohl, super() (Kleinbuchstaben) ruft einen Konstruktor der Elternklasse auf. Sie können Argumente einfügen: super(foo, bar)

Da ist auch ein super Schlüsselwort, das Sie in Methoden verwenden können, um eine Methode der Oberklasse aufzurufen

Ein schnelles Googlen nach “Java super” ergibt Das

super in Java
Sagar V

Das ist richtig. Super wird verwendet, um den übergeordneten Konstruktor aufzurufen. Angenommen, Sie haben einen solchen Codeblock

class A{
    int n;
    public A(int x){
        n = x;
    }
}

class B extends A{
    int m;
    public B(int x, int y){
        super(x);
        m = y;
    }
}

Anschließend können Sie der Member-Variablen n einen Wert zuweisen.

924770cookie-checksuper() in Java

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy