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
.
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 deCar
petrolEngine.displayEngine()
- accéder à la méthode de la classe interne en utilisant l'objet deEngine
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