Classe imbriqué

Fermé
securinets Messages postés 77 Date d'inscription dimanche 30 septembre 2012 Statut Membre Dernière intervention 11 septembre 2014 - 28 mars 2013 à 23:53
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 29 mars 2013 à 19:11
Bonjour, je comprend pas la notion d'une classe imbriqué en java quelqu'un qui peut m'expliquer svp en mot simple j'ai trouvé des explications complexes et j'ai rien compri !!! merci pour votre aide



2 réponses

Flog78 Messages postés 16 Date d'inscription mercredi 28 novembre 2012 Statut Membre Dernière intervention 17 mai 2013 4
29 mars 2013 à 15:47
C'est simplement une classe qui se trouve à l'intérieur d'un autre.

Voici un exemple :
public class Test4
{
	private Element monElement;
	
	public static void main(String[] args)
	{
		new Test4();
	}
	
	public Test4()
	{
		monElement = new Element("Toto");
		System.out.println(monElement.getName());
	}

	
	private class Element
	{
		String name;
		
		public Element(String name)
		{
			this.name = name;
		}

		public String getName()
		{
			return name;
		}
	}
	
}
1
securinets Messages postés 77 Date d'inscription dimanche 30 septembre 2012 Statut Membre Dernière intervention 11 septembre 2014 1
29 mars 2013 à 16:51
mais c'est quoi l'utilité de ces classes imbriqués?
0
Flog78 Messages postés 16 Date d'inscription mercredi 28 novembre 2012 Statut Membre Dernière intervention 17 mai 2013 4
29 mars 2013 à 16:58
Le seul intérêt que je voit c'est qu'avec le "private" on peut réduire leur visibilité à la seule classe qui les contient, c'est à dire qu'elles ne pourront pas être utilisé par une autre classe.
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié par KX le 29/03/2013 à 19:12
L'utilisation de classes imbriquées permet d'avoir un objet "normal" qui fait un traitement important, et un ou plusieurs objets "dépendants" du premier qui ont accès à toutes ses méthodes et attributs pour effectuer un traitement plus spécifiques.

Exemple (bidon) :

public class A
{
    public int x;
    
    public class B
    {
        public int y;
        
        public int f()
        {
            return x+y;
        }
    }
    
    public static void main(String[] args)
    {
        A a = new A();
        a.x = 1;
        
        B b = a.new B();
        b.y = 2;
        
        System.out.println(b.f());
    }
}

On peut notamment avoir besoin de ce genre de classes internes pour implémenter une interface directement dans le code (pour les Iterator dans les Collection, des Listener dans les interfaces graphiques, des Threads, etc.)
1