236 votes

Super() en Java

Est utilisé pour appeler le constructeur parent ? S’il vous plaît expliquer .

282voto

pakore Points 4226

``appelle le constructeur parent sans arguments.

Il peut être utilisé également avec des arguments. C'est-à-dire et il appelle le constructeur qui accepte un 1 paramètre du type de (si il existe).

Aussi, il peut être utilisé pour appeler les méthodes du parent. C'est-à-dire``

Plus d’infos et tutoriel ici

160voto

FooBar Points 1326

1.Super mot-clé est utilisé pour appeler le parent immédiat.

2.Super mot-clé peut être utilisé avec les membres de l'instance c'est à dire, les variables d'instance et des méthodes d'instance.

3.Super mot-clé peut être utilisé à l'intérieur de constructeur à appeler le constructeur de la classe parent.

OK, maintenant nous allons mettre en œuvre concrètement cette points de mot-clé super.

Découvrez la différence entre le programme 1 et 2. Voici le programme de 2 preuves de notre première déclaration de mot-clé Super en Java.

Programme 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();
    }
}

Sortie : -

200

200

Maintenant, découvrez le programme 2 et essayer de comprendre la différence principale.

Programme 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();
    }
}

Sortie

100

200

Dans le programme 1, le résultat a été que de la classe dérivée. Il ne pouvait pas imprimer la variable de la classe de base ou de la classe parent. Mais dans le programme 2, nous avons utilisé un mot-clé super avec la variable d'un moment de l'impression de sa sortie, et au lieu de l'impression de la valeur de la variable a de la dérivée, il a imprimé la valeur de la variable a de la classe de base. Donc il des preuves que le Super mot-clé est utilisé pour appeler le parent immédiat.

OK, maintenant découvrez la différence entre le programme 3 et 4 programme

Programme 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();
    }
}

Sortie

200

Ici, la sortie est de 200. Quand nous avons appelé la fonction, la fonction de la dérivée de la classe a été appelé. Mais que devons-nous faire si nous voulons appeler la fonction de la classe parent. Découvrez le programme 4 pour la solution.

Programme 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();
    }
}

Sortie

100

200

Nous avons ici deux sortie 100 et 200. Lorsque la fonction de la classe dérivée est invoquer, il appelle d'abord la fonction de la classe parent, car à l'intérieur de la fonction de la dérivée de la classe, nous avons appelé la fonction de la classe parente en mettant le mot-clé super avant le nom de la fonction.

39voto

aioobe Points 158466

Oui. ``va appeler le constructeur de la super-classe.

Jetez un oeil à cet exemple :

Tirages :

30voto

Heinzi Points 66519

Est super() est utilisée pour appeler le constructeur parent?

Oui.

Pls expliquer à propos de Super().

super() est une utilisation particulière de l' super mot-clé lorsque vous appelez un sans paramètre constructeur parent. En général, l' super mot-clé peut être utilisé pour appeler des méthodes de remplacement, l'accès des champs cachés ou d'appeler un constructeur de la superclasse.

Voici le tutoriel officiel

6voto

Bozho Points 273663

Oui, (en minuscules) appelle un constructeur de la classe parente. Vous pouvez inclure des arguments :

Il y a aussi un `` mot clé, que vous pouvez utiliser dans des méthodes pour appeler une méthode de la superclasse

Un rapide sur google pour « super Java » se traduit par cette

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X