POO : Portée des classes héritées
Résolu
landboa
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai les classes Java suivantes :
abstract class Animal {
protected int poids;
protected String couleur;
protected void manger (){
System.out.println ("Je mange de la viande");
}
public void getpoids (){
System.out.println ("Je pèse en kg : " + poids);
}
abstract void deplacement ();
abstract void crier ();
}
abstract class Felin extends Animal {
protected void deplacement (){
System.out.println ("Je me déplace silencieusement");
}
abstract void crier ();
}
public class Chat extends Felin{
public Chat (int pPoids, String pCouleur){
poids = pPoids;
couleur = pCouleur;
}
public void crier (){
System.out.println ("Je miaule");
}
}
Après cela j'ai le programme suivant :
public class ClassMain {
public static void main (String [] args){
Chat Gudule = new Chat (3, "Noir");
Gudule.getpoids();
Gudule.poids = 5;
Gudule.getpoids();
Gudule.manger ();
Gudule.deplacement();
Gudule.crier();
}
}
Ma question est la suivante : Comment ce fait il que je puisse accèder au poids (avec Gudule.poids = 5;) alors que poids est 'protected' ? Il faut etre dans une classe fille pour que cela soit possible et ClassMain n'est pas fille de Animal.
J'ai les classes Java suivantes :
abstract class Animal {
protected int poids;
protected String couleur;
protected void manger (){
System.out.println ("Je mange de la viande");
}
public void getpoids (){
System.out.println ("Je pèse en kg : " + poids);
}
abstract void deplacement ();
abstract void crier ();
}
abstract class Felin extends Animal {
protected void deplacement (){
System.out.println ("Je me déplace silencieusement");
}
abstract void crier ();
}
public class Chat extends Felin{
public Chat (int pPoids, String pCouleur){
poids = pPoids;
couleur = pCouleur;
}
public void crier (){
System.out.println ("Je miaule");
}
}
Après cela j'ai le programme suivant :
public class ClassMain {
public static void main (String [] args){
Chat Gudule = new Chat (3, "Noir");
Gudule.getpoids();
Gudule.poids = 5;
Gudule.getpoids();
Gudule.manger ();
Gudule.deplacement();
Gudule.crier();
}
}
Ma question est la suivante : Comment ce fait il que je puisse accèder au poids (avec Gudule.poids = 5;) alors que poids est 'protected' ? Il faut etre dans une classe fille pour que cela soit possible et ClassMain n'est pas fille de Animal.
A voir également:
- POO : Portée des classes héritées
- Happy poo - Télécharger - Arcade
1 réponse
Java autorise des "facilités" de développement. Tu peux ainsi accéder aux attributs protected de n'importe quelle classe (avec ou sans relation d'héritage) lorsque celle-ci se trouve dans le même package.
Si tu mets Chat et ClassMain dans deux packages différents tu ne pourras pas compiler à cause des accès à poids, manger() et deplacement()
La confiance n'exclut pas le contrôle
Si tu mets Chat et ClassMain dans deux packages différents tu ne pourras pas compiler à cause des accès à poids, manger() et deplacement()
La confiance n'exclut pas le contrôle