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
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.
Citation:
2-prenons cet exemple
Code:
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...
Citation:
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.
Citation:
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.
Citation:
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.)
Citation:
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:
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:
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:
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:
1 2
| Fuit fruit = obtenirUnFruitQuelconque();
Chat chat = (Chat) fruit; |
Aucun objet de type Fruit ne peut être également de type Chat.
Citation:
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"