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 :

Héritage Extend Super()


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2014
    Messages : 80
    Points : 64
    Points
    64
    Par défaut Héritage Extend Super()
    Bonjour à tous,
    Etudiant en java, j'ai réaliser un petit programme de planning.
    Développer en MVC, maintenant j'essaie de nettoyer le code afin qu'il soit le plus propre possible.

    J’essaie donc d'implémenter mes classes en respectant la notion d'héritage mais j'ai l'impression de ne pas avoir bien compris un point :

    La classe mère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class Affaire {
     
    	protected int numAffaire;	
     
    	public Affaire() {
    	}
    	public void setNumAffaire(int numAffaire) {
    		this.numAffaire = numAffaire;
    	}
    	public int getNumAffaire() {
    		return this.numAffaire;
    	}
    }

    La classe fille :

    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
     
    public class Locations extends Affaire{
     
    	private String nomAffaire;
     
    	// Constructeur par défaut
    	public Locations() {
    	}
     
    	public Locations(int numAffaire) {
    		super(numAffaire);
    	}
     
    	public void setNomAffaire(String nomAffaire) {
    		this.nomAffaire = nomAffaire;
    	}
     
    	public String getNomAffaire() {
    		return this.nomAffaire;
    	}
    }
    Du coup dans la jsp relative à la classe Locations je m'attendais à recevoir le numéro de l'affaire "getNumAffaire()", ce qui n'est pas le cas. c'est la classe AffaireDao qui récupère le numéro d'affaire.
    Je pensais que "Locations" étant une extension de "Affaire" il accédé automatiquement aux variables de la classe Affaire.
    Je viens de relire la doc et quelques site web mais il y a un truc qui m’échappe.

    Si vous pouvez juste me remettre sur le droit chemin c'est cool, bonne journée à tous

  2. #2
    Membre habitué Avatar de Arislas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2015
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 116
    Points : 170
    Points
    170
    Par défaut
    Pour l'héritage, tu ne récupère pas les variable de l'autre classe, tu créer une classe qui implémente les même variables, et les même méthodes mais tu n'as aucune valeur. D'ailleurs, tu extends vers une classe qui n'est pas instancier, elle n'as encore aucune valeur.

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ce qui m'étonne, moi, c'est que Locations compile : vu que tu y appelles un constructeur de la classe Affaire qui n'existe pas (un constructeur qui prend un numAffaire en paramètre).

    La notion d'héritage n'est pas un système d'accès automatique aux variables de l'autre classe. La classe Locations hérite des attributs et méthode de la classe Affaire : ce qui signifie que les instances de la classe Locations ont, en plus des attributs et méthodes définies dans la classe Location elle-même, les attributs et méthodes de la classe Affaire (sauf si on redéfinit une méthode de la classe Affaire dans la classe Locations, auquel cas la redéfinition remplace la méthode redéfinie).

    Une instance (un objet) de classe Location a un attribut numAffaire : c'est le sien, point. Par contre, il pourrait ne pas être accessible (ou vue) dans la classe Locations, si la variable était déclarée private : mais la valeur stockée dans la variable resterait bien propre à l'instance.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [UC] extend ou héritage
    Par Pragmateek dans le forum Cas d'utilisation
    Réponses: 2
    Dernier message: 06/04/2008, 23h45
  2. Extends et Super()
    Par juninho269 dans le forum Langage
    Réponses: 6
    Dernier message: 27/03/2008, 08h10
  3. Héritage - super()
    Par uaz dans le forum Général Python
    Réponses: 10
    Dernier message: 27/05/2007, 07h51
  4. Réponses: 4
    Dernier message: 03/07/2006, 22h52
  5. [Generics] super & extends
    Par ®om dans le forum Langage
    Réponses: 4
    Dernier message: 25/06/2006, 19h42

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