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

Java Discussion :

Question sur l'héritage


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 262
    Par défaut Question sur l'héritage
    salut , voila je suis débutant en java et j'ai quelque question et j'aimerais bien que vous m'expliquiez7
    1-quand on hérite d'une classe de base est ce qu'on hérite ce qui est private ou protected.
    2-prenons cet exemple7

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Classe a{
      Private Void afficher(‘  je suis un a ’) ;
    }
     
    Classe b extends  a{
        Void afficher(‘ je suis b  ’) ;
    }
    ici est ce qu'on peut parler de la redéfinition de la méthode afficher()
    3. l'utilisation de super() : je crois que c'est le constructeur de la classe de base,mais quand on écrit" super.qqchose " est ce que c'est la classe de base ou l'objet de la classe de base
    4. quelques fois lors du transtypage on a une ereur dynamique et pas une compilation eror , je veux bien savoir est ce qu'il ya deux types de transtypage , un qui est permis et l'autre non
    voila mes questions et pour finir j'aimerais bien que vous me proposer un livre qui traite tout sur l’héritage

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Remarque préliminaire : ne change pas le style d'écriture pour rien. Il est mieux par défaut puisque c'est celui qui a été choisi, et puis c'est embêtant pour te répondre.

    Citation Envoyé par momedalhouma Voir le message
    1-quand on hérite d'une classe de base est ce qu'on hérite ce qui est private ou protected.
    Non, on hérite pas de ce qui est private. Private signifie que seule la classe en cours peut le voir ou s'en servir, aucune autre classe, et notamment pas les sous-classes.
    Hériter d'une variable ou d'une méthode ou d'une classe imbriquée, ça veut dire pouvoir la voir et s'en servir.
    Donc non, on n'hérite pas de ce qui est private. C'est à ça que sert private, en fait.

    Protected signifie que c'est accessible aux sous-classes (et aux classes du même package aussi.) Donc oui, on en hérite. C'est à ça que sert protected.

    2-prenons cet exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Classe a{
      Private Void afficher(‘  je suis un a ’) ;
    }
     
    Classe b extends  a{
        Void afficher(‘ je suis b  ’) ;
    }
    Gare aux pseudos-codes. Ici tu aurais pu mettre du vrai code Java, ça aurait pas coûté plus cher...

    ici est ce qu'on peut parler de la redéfinition de la méthode afficher()
    Non. Pas héritée, pas de redéfinition. La méthode afficher() de la classe B ne change rien aux appels de la méthode afficher() dans la classe A.

    3. l'utilisation de super() : je crois que c'est le constructeur de la classe de base,
    L'appel au constructeur de la classe mère, oui.

    mais quand on écrit" super.qqchose " est ce que c'est la classe de base ou l'objet de la classe de base
    ? Pas compris.

    Si la classe A a une méthode void faireTruc() (ou hérite de cette méthode) et que la classe B en hérite, alors super.faireTruc() est un appel à la méthode faireTruc() de la classe A.

    Si la classe A a un membre int machin (ou hérite de ce membre) et que la classe B en hérite, alors super.machin est le membre machin de la classe A.
    (Donc super.machin est exactement la même chose que machin, sauf si la classe B a eu la mauvaise idée de définir un autre membre nommé machin, dont le nom va donc masquer le machin de la classe A.)

    4. quelques fois lors du transtypage on a une ereur dynamique et pas une compilation eror , je veux bien savoir est ce qu'il ya deux types de transtypage , un qui est permis et l'autre non
    Euh... Il y a une infinité de transtypages qui ne sont pas permis -_-°.
    Intéressons-nous seulement aux transtypages qui font une erreur dynamique (à l'exécution) mais pas statique (à la compilation.)

    J'ai trouvé une page qui parle de transtypage objet en Java.

    Il y a en grosso-modo deux :

    - Transtypage vers le haut : ils ne posent aucun problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Animal animal = new Chat();
    Animal est un type ascendant (classe mère, classe grand-mère, interface etc,) de Chat.

    Donc un Chat est plein de choses, et est entre autres un Animal. On peut assigner un Chat à une variable de type Animal, ça ne pose aucun problème.

    - Transtypage vers le bas : cast nécessaire, et ce cast peut échouer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Animal animal = obtenirUnAnimalQuelconque();
    Chat chat = animal; // compile pas
    Un animal peut possiblement être un Chat, mais ça dépend lesquels, on est pas sûr. Le compilateur refuse cette syntaxe. Un cast est nécessaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Animal animal = obtenirUnAnimalQuelconque();
    Chat chat = (Chat) animal;
    Le cast vers Chat signifie en substance "je crois que cet objet est en réalité un Chat ou un sous-type de Chat, donc, à l'exécution, vérifie si j'ai raison, et si oui, assigne animal à chat. Si non, je me suis trompé, lance une ClassCastException."

    - Un genre de transtypage incorrect : le transtypage à côté. Le compilateur les refuse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Fuit fruit = obtenirUnFruitQuelconque();
    Chat chat = (Chat) fruit;
    Aucun objet de type Fruit ne peut être également de type Chat.

    et pour finir j'aimerais bien que vous me proposer un livre qui traite tout sur l’héritage
    N'importe quel livre un peu sérieux sur Java s'intéresse en profondeur aux objets et à un peu d'utilisation du polymorphisme.

    J'aime bien "Java tête la première" et "design patterns tête la première"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 262
    Par défaut
    merci beaucoup pour tes réponses
    je vais essayer de lire ces livres

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

Discussions similaires

  1. Questions sur l'héritage multiple
    Par beegees dans le forum C++
    Réponses: 12
    Dernier message: 31/03/2008, 17h01
  2. Question sur l'héritage (débutant en C++)
    Par beegees dans le forum C++
    Réponses: 19
    Dernier message: 30/03/2008, 14h45
  3. petite question sur l'héritage et les cast
    Par baedal dans le forum Langage
    Réponses: 3
    Dernier message: 29/02/2008, 00h48
  4. Questions sur l'héritage dans Matisse
    Par Cassios dans le forum NetBeans
    Réponses: 8
    Dernier message: 14/03/2007, 23h23
  5. Question sur l'héritage
    Par the big ben 5 dans le forum Delphi
    Réponses: 28
    Dernier message: 06/06/2006, 17h27

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