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

Classe imbriquée C#

Classe imbriquée C#

Dans ce didacticiel, vous découvrirez la classe imbriquée en C# à l'aide d'exemples.

En C#, nous pouvons définir une classe dans une autre classe. C'est ce qu'on appelle une classe imbriquée. Par exemple,

class OuterClass {
  ...
  class InnerClass {
    ...
  }
}

Ici, nous avons créé la classe InnerClass à l'intérieur de la classe OuterClass . Le InnerClass est appelée la classe imbriquée.

Accéder aux membres

Pour accéder aux membres des classes imbriquées, nous devons d'abord créer leurs objets.

1.Créer un objet de classe externe

OuterClass obj1 = new OuterClass();

Ici, nous avons créé le obj1 objet de la classe OuterClass .

2. Créer un objet de classe interne

OuterClass.InnerClass obj2 = new OuterClass.InnerClass();

Vous pouvez voir que nous avons utilisé OuterClass.InnerClass pour créer le obj2 objet de la classe interne. C'est parce que InnerClass est la classe imbriquée de OuterClass .

Une fois que nous avons créé l'objet des classes individuelles, nous pouvons utiliser le nom de l'objet et l'opérateur point pour accéder aux membres de chaque classe.

Exemple :classe imbriquée C#

using System;
namespace CsharpNestedClass {
 
  // outer class
  public class Car {

    public void displayCar() {
      Console.WriteLine("Car: Bugatti");
    }
 
    // inner class
    public class Engine {
      public void displayEngine() {
        Console.WriteLine("Engine: Petrol Engine");
      }
    }
  }
  class Program {
    static void Main(string[] args) {

      // create object of outer class
      Car sportsCar = new Car();

      // access method of outer class
      sportsCar.displayCar();
 
      // create object of inner class
      Car.Engine petrolEngine = new Car.Engine();
      
      // access member of inner class
      petrolEngine.displayEngine();
 
      Console.ReadLine();
 
    }
  }
}

Sortie

Car: Bugatti
Engine: Petrol Engine

Dans le programme ci-dessus, nous avons imbriqué le Engine classe à l'intérieur du Car classe.

À l'intérieur du Program classe, nous avons créé des objets à la fois de la classe externe et de la classe interne.

// object of outer class
Car sportsCar = new Car();

// object of nested class
Car.Engine petrolEngine = new Car.Engine();

Nous avons ensuite utilisé ces objets pour accéder aux méthodes de chaque classe.

  • sportsCar.displayCar() - accéder à la méthode de classe externe en utilisant l'objet de Car
  • petrolEngine.displayEngine() - accéder à la méthode de la classe interne en utilisant l'objet de Engine

Remarque :Nous ne pouvons pas accéder aux membres de la classe interne en utilisant l'objet de la classe externe. Par exemple,

// error code
sportsCar.displayEngine();

Ici, nous ne pouvons pas accéder au displayEngine() méthode de la classe interne Engine en utilisant la sportsCar objet de la classe externe.

Accéder aux membres de la classe externe à l'intérieur de la classe interne

Nous pouvons accéder aux membres de la classe externe à l'intérieur de la classe interne. Pour cela, nous utilisons un objet de la classe externe. Par exemple,

using System;
namespace CsharpNestedClass {

  // outer class
  public class Car {
 
    public string brand = "Bugatti";

    // nested  class
    public class Engine {
      public void displayCar() {

        // object of outer class
        Car sportsCar = new Car();
        Console.WriteLine("Brand: " + sportsCar.brand);
      }
    }
  }

  class Program {
    static void Main(string[] args) {

       // object of inner class
       Car.Engine engineObj = new Car.Engine();
       engineObj.displayCar();

      Console.ReadLine();
    }
  }
}

Sortie

Brand: Bugatti

Dans l'exemple ci-dessus, nous avons imbriqué le Engine classe à l'intérieur du Car classer. Remarquez la ligne,

// inside Engine class
Car sportsCar = new Car();
Console.WriteLine("Brand: " + sportsCar.brand);

Ici, nous avons utilisé l'objet de la classe Car pour accéder au champ marque .

Accéder aux membres statiques de la classe externe à l'intérieur de la classe interne

Si nous devons accéder aux membres statiques de la classe externe, nous n'avons pas besoin de créer son objet. Au lieu de cela, nous pouvons utiliser directement le nom de la classe externe. Par exemple,

using System;
namespace CsharpNestedClass {

  // outer class
  public class Car {
    //static member of outer class
    public static string brand = "Bugatti";

    // nested class
    public class Engine {
      public void display() {
        
        // access static member of outer class
        Console.WriteLine("Brand: " + Car.brand);
      }
    }
  }
  class Program {
    static void Main(string[] args) {

      // object of inner class
       Car.Engine obj = new Car.Engine();
       obj.display();

      Console.ReadLine();
    }
  }
}

Sortie

Brand: Bugatti

Dans l'exemple ci-dessus, nous avons imbriqué le Engine classe à l'intérieur du Car classer. Car a un champ statique marque .

Ici, nous avons accédé au champ statique marque à l'intérieur de la classe interne (Engine ) en utilisant le nom de la classe externe (Car ).

Console.WriteLine("Brand: " + Car.brand);

Hériter de la classe externe

Comme une classe normale, nous pouvons également hériter de la classe externe. Par exemple,

using System;
namespace CsharpNestedClass {
 
  // outer class
  class Computer {

    public void display() {
      Console.WriteLine("Method of Computer class");
    }
 
    // nested class
    public class CPU {
 
    }
   }

    class Laptop : Computer {
 
    }

  class Program  {
    static void Main(string[] args) {
 
      // object of derived class
      Laptop obj = new Laptop();
      obj.display();     
 
      Console.ReadLine();
    }
  }
}

Sortie

Method of Computer class

Dans l'exemple ci-dessus, nous avons dérivé la classe Laptop de la classe externe Computer .

Grâce à cela, nous pouvons accéder au display() méthode de la classe Computer en utilisant l'objet de la classe Laptop .

Hériter de la classe interne

En C#, nous pouvons également hériter de la classe interne. Par exemple,

using System;
namespace CsharpNestedClass {

  // outer class
  class Computer {

    // nested  class
    public class CPU {
      public void display() {
        Console.WriteLine("Method of CPU class");
      }

    }
  }
    
  // inheriting inner class
  class Laptop : Computer.CPU {

  }

  class Program  {
    static void Main(string[] args) {

      // object of derived class
      Laptop obj = new Laptop();
      obj.display();     

      Console.ReadLine();
    }
  }
}

Sortie

Method of CPU class

Dans l'exemple ci-dessus, nous avons dérivé le Laptop classe de la classe interne CPU .

Notez que nous avons utilisé le nom de la classe externe avec la classe imbriquée pour hériter de la classe interne.

class Laptop : Computer.CPU {}

Langue C

  1. Classe et objet C#
  2. Modificateurs d'accès C#
  3. Constructeur C#
  4. Mot-clé statique C#
  5. Classe abstraite et méthode C#
  6. Classe imbriquée C#
  7. Classe partielle C# et méthode partielle
  8. Classe et méthode scellées C#
  9. Surcharge du constructeur C#