IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Mot clé super


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Par défaut Mot clé super
    Bonjour,
    Premier message de ma part.
    Je suis totalement novice en Java, retraité, par pure maintenance intellectuelle, je m'amuse à apprendre ce langage.
    J'ai eu dans ma carrière pro à me frotter à faible niveau à plusieurs langages informatiques.

    Sur les recommandations de ce site, grâce au très bon livre de C. Delannoy j'avance.
    J'ai téléchargé les exemples de code pour chaque chapitre du livre.

    Cette présentation du bonhomme effectuée, voici ce sur quoi je bute.
    Le chapitre 8 traite de l'héritage et du polymorphisme ce fut difficile mais avec beaucoup d'exercices mes neurones ont acceptées de piger.
    Les classes imbriquées m'ont particulièrement demandé d'efforts.

    Voici la copie du code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    package solo;
    class A {
    	void f() {
    		System.out.println ("appel f de A") ; }
    }
    class B extends A {
    	void f() {
    		System.out.println ("appel f de B") ; }
    	public void test() { 
    		A a = super ;
    		a.f() ;
    		super.f() ;
    		this.f() ;
    	}
    }
    public class Super {
    	public static void main (String args[])
    	{ B b = new B() ;
    	b.test() ;
    	}
    }
    La méthode test() de la classe B propose la ligne A a = super ;
    Le compilateur la refuse obstinément.
    En remplaçant super par A() pas de soucis tout baigne.

    Est-ce une erreur de copie de fichier ou peut-on instancier un objet avec un super ?
    Merci par avance

  2. #2
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    Bonjour

    C'est effectivement une erreur de copie.

    super ne s'utilise jamais seul, c'est soit:

    -super() afin d'appeler le constructeur par défaut du parent, ce n'est pas obligé de l'ajouter c'est implicite(ajouté par le compilo).
    -super(quelque chose) avec d'appeler le constructeur avec paramètre du parent
    -super.maFonction() ou super.maVariable afin d'appeler explicitement une méthode/variable d'instance du parent, uniquement nécessaire pour spécifier explicitement qu'on veut utiliser celle du parent plutôt que celle de l'enfant. (c'est à mon avis une mauvaise pratique, mais il est bon de savoir que ça existe).

    this par contre peut s'utiliser seul.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. La généricité en Java et le mot clé super
    Par win_ubuntu dans le forum Général Java
    Réponses: 10
    Dernier message: 14/05/2015, 10h08
  2. Réponses: 9
    Dernier message: 20/07/2010, 15h40
  3. mot clé "super"
    Par Cbonniot dans le forum Langage
    Réponses: 3
    Dernier message: 27/10/2009, 15h25
  4. mot clé super
    Par bandit_debutant dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 27/05/2008, 16h19
  5. Réponses: 3
    Dernier message: 12/04/2007, 08h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo