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 :

Protected contre Super()


Sujet :

avec Java

  1. #1
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut Protected contre Super()
    Bonjour,

    Tout d'abord, désolée, je n'ai pas su ou mettre ce post >.>
    Ensuite mon petit problème...

    Si on a une classe mère et une classe fille... Mieux vaut-il mettre les propriétés de la classe mère en protected ou est ce qu'il est préférable d'utiliser super() (lors de l'utilisation du constructeur) ou des accesseurs pour accéder aux propriétés lors d'une lecture d'une propriété....

    Heu... j'ai été assez claire? >.<

  2. #2
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    En gros quel est ton probleme ?

    super() te permet d'appeller le constructeur de la classe parente.

    Pour ce qui est de protected, tout dépend si tu as besoin de tes attributs ailleurs ou pas, mais généralement il est mieux de les mettre en protected ou private. protected te permettra de ne donner acces aux variable que par les classes du même package et les classes filles.

    Si tu peux être plus claire sur le probleme qui se pose à toi, je te répondrai de nouveau

    F.

  3. #3
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Un responsable IRC?

    En fait... J'ai l'habitude de mettre les attributs en private et d'y accéder avec des getters depuis les classes filles.
    Mais je viens de lire (j'ai peut être mal comprit) qu'on pouvait y accéder directement depuis la classe fille sans passer par ce getter...

    Ai-je bien comprit? Et si oui, que vaut-il mieux utiliser

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Tout dépend de ta classe. Généralement, on met les propriété en privée, sauf s'il y a bonne une raison de faire autrement. Dans ton cas, si tu construit explicitement ta classe mère pour qu'elle soit dérivée en classes fille, il peut être intéressant de mettre certaines propriétés en protected. Cependant, il vaut parfois mieux mettre des getters/setters protected ou public plutot que de donner un accès direct. Ceci permet de forcer les classes filles à respecter le comportement de la classe mère, et cette dernière à la possibilité de controler les valeur passées. Quand au constructeur, il vaut mieux toujours faire appel au constructeur le plus adéquat du parent. Ca permet de tirer pleinement avantage de l'héritage. Si on change le constructeur du parent (un peu de code en plus) on dois pas passer dans toutes les filles pour mettre ce bout de code aussi parce que les fille auraient fait un copier/coller de l'initialisation plutot que de passer des paramètres à super().

  5. #5
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Un responsable IRC?

    En fait... J'ai l'habitude de mettre les attributs en private et d'y accéder avec des getters depuis les classes filles.
    Mais je viens de lire (j'ai peut être mal comprit) qu'on pouvait y accéder directement depuis la classe fille sans passer par ce getter...

    Ai-je bien comprit? Et si oui, que vaut-il mieux utiliser
    En effet, tu peux accéder à des attributs de la classe mère depuis la classe fille puisqu'elle en hérite.

    Supposons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Voiture
    {
    	protected int nbPortes;
    	protected Voiture(int nbPortes)
    	{
    		this.nbPortes=nbPortes;
    	}
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Clio extends Voiture
    {
        public Clio(int nbPortes)
        {
            super(nbPortes);
    		System.out.println("ma Clio a "+this.nbPortes+" portes" );
        }
    	public static void main(String[] args)
    	{
    		Clio maVoiture=new Clio(5);
    	}
    }
    Si tu execute ce code, il t'affichera "ma Clio a 5 portes".

    Ici, la classe Clio se sert du constructeur de la classe Voiture (qui est en protected, donc accessible puisque Clio est une Voiture par héritage) grâce au mot clé Super.

    Quant à l'acces aux variables, tout dépend si tu veux juste accéder aux valeurs ou les modifier, personnellement je préfère faire des getters et setters

    Et oui un responsable IRC fait aussi du java ^^

    F.

  6. #6
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    D'accord, merci beaucoup de vos réponses

    Le sujet est clos. *o*

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

Discussions similaires

  1. Protection contre les SQL Injections ?
    Par kedare dans le forum JDBC
    Réponses: 9
    Dernier message: 05/05/2010, 10h42
  2. Programme de protection contre le déni de service
    Par EJ dans le forum Développement
    Réponses: 7
    Dernier message: 03/07/2009, 22h14
  3. La meilleure protection contre le piratage des logiciels ?
    Par iubito dans le forum Débats sur le développement - Le Best Of
    Réponses: 184
    Dernier message: 23/12/2008, 13h35
  4. [Sécurité] Protection contre le spam
    Par lhpp dans le forum Langage
    Réponses: 3
    Dernier message: 20/09/2006, 10h31
  5. PROTECTION CONTRE LES ASPIRATEURS DE SITE
    Par squalito dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/01/2005, 14h06

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