Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Comprendre les classes imbriquées C# : Définition, utilisation et héritage

Comprendre les classes imbriquées C#

Explorez comment définir, accéder et hériter des classes imbriquées en C# avec des exemples pratiques démontrant les meilleures pratiques.

En C#, une classe peut être déclarée à l'intérieur d'une autre classe. Le type interne est appelé classe imbriquée. Par exemple :

class ClasseExterne {
    // ... membres externes
    class ClasseInterne {
        // ... membres internes
    }
}

Cet exemple crée ClasseInterne à l'intérieur de ClasseExterne. Le type interne n'est visible qu'à l'intérieur du type externe sauf si son modificateur d'accès le permet autrement.


Accès aux membres de classe imbriquée

Pour travailler avec des types imbriqués, vous instanciez d'abord chaque classe séparément.

1. Créer une instance de la classe externe

ClasseExterne externe = new ClasseExterne();

Ici, externe est un objet de ClasseExterne.

2. Créer une instance de la classe imbriquée

ClasseExterne.ClasseInterne interne = new ClasseExterne.ClasseInterne();

Puisque ClasseInterne est imbriquée dans ClasseExterne, vous la qualifiez avec le nom du type externe.

Une fois instanciées, vous pouvez appeler les membres via la référence d'objet.

Exemple : Classe imbriquée avec méthodes

using System;
namespace NestedClassDemo {
    public class Voiture {
        public void AfficherVoiture() => Console.WriteLine("Voiture : Bugatti");
        public class Moteur {
            public void AfficherMoteur() => Console.WriteLine("Moteur : Moteur Essence");
        }
    }
    class Program {
        static void Main(string[] args) {
            Voiture voitureSport = new Voiture();
            voitureSport.AfficherVoiture();
            Voiture.Moteur moteurEssence = new Voiture.Moteur();
            moteurEssence.AfficherMoteur();
            Console.ReadLine();
        }
    }
}

Sortie

Voiture : Bugatti
Moteur : Moteur Essence

L'exemple montre comment créer des objets à la fois de l'externe Voiture et de l'imbriquée Moteur et invoquer leurs méthodes.

Notez que vous ne pouvez pas appeler une méthode de type imbriqué directement depuis l'instance externe :

// Invalide
voitureSport.AfficherMoteur();

Accès aux membres de la classe externe depuis une classe imbriquée

Les classes imbriquées peuvent référencer les membres de leur type conteneur. Vous pouvez utiliser une instance du type externe ou le nom du type externe pour les membres statiques.

Utilisation d'une instance pour accéder aux membres d'instance

using System;
namespace NestedClassDemo {
    public class Voiture {
        public string Marque = "Bugatti";
        public class Moteur {
            public void AfficherMarque() {
                Voiture voiture = new Voiture();
                Console.WriteLine("Marque : " + voiture.Marque);
            }
        }
    }
    class Program {
        static void Main(string[] args) {
            Voiture.Moteur moteur = new Voiture.Moteur();
            moteur.AfficherMarque();
            Console.ReadLine();
        }
    }
}

Sortie

Marque : Bugatti

Accès aux membres statiques sans instanciation

using System;
namespace NestedClassDemo {
    public class Voiture {
        public static string Marque = "Bugatti";
        public class Moteur {
            public void AfficherMarque() {
                Console.WriteLine("Marque : " + Voiture.Marque);
            }
        }
    }
    class Program {
        static void Main(string[] args) {
            Voiture.Moteur moteur = new Voiture.Moteur();
            moteur.AfficherMarque();
            Console.ReadLine();
        }
    }
}

Sortie

Marque : Bugatti

Héritage impliquant des classes imbriquées

Les classes imbriquées peuvent participer à l'héritage comme n'importe quel autre type.

Dérivation d'une classe depuis une classe externe

using System;
namespace NestedClassDemo {
    class Ordinateur {
        public void Afficher() => Console.WriteLine("Méthode de la classe Ordinateur");
        public class Processeur {
            // Membres additionnels peuvent être ajoutés ici
        }
    }
    class Portable : Ordinateur {
        // Portable hérite de tous les membres d'Ordinateur
    }
    class Program {
        static void Main(string[] args) {
            Portable portable = new Portable();
            portable.Afficher();
            Console.ReadLine();
        }
    }
}

Sortie

Méthode de la classe Ordinateur

Dérivation d'une classe depuis une classe imbriquée

using System;
namespace NestedClassDemo {
    class Ordinateur {
        public class Processeur {
            public void Afficher() => Console.WriteLine("Méthode de la classe Processeur");
        }
    }
    class Portable : Ordinateur.Processeur {
        // Portable hérite des membres d'Ordinateur.Processeur
    }
    class Program {
        static void Main(string[] args) {
            Portable portable = new Portable();
            portable.Afficher();
            Console.ReadLine();
        }
    }
}

Sortie

Méthode de la classe Processeur

Quand vous héritez d'une classe imbriquée, vous devez qualifier le type avec son nom de classe externe, par exemple Ordinateur.Processeur.

Langue C

  1. Classes et objets C# : Fondations pour une POO robuste
  2. Comprendre les modificateurs d'accès C# : Public, Private, Protected, Internal et plus
  3. Constructeurs C# : Types, exemples et patterns avancés
  4. Mot-clé Static C# : Maîtriser les variables, méthodes et classes statiques
  5. Maîtriser les classes et méthodes abstraites C# : Guide pratique
  6. Comprendre les classes imbriquées C# : Définition, utilisation et héritage
  7. Comprendre les classes et méthodes partielles C#
  8. Maîtriser les classes et méthodes sealed en C# : Quand les utiliser, exemples clairs et sécurité du code
  9. Maîtriser la surcharge de constructeurs en C#