Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C# geneste klasse

C# geneste klasse

In deze tutorial leer je over de geneste klasse in C# aan de hand van voorbeelden.

In C# kunnen we een klasse binnen een andere klasse definiëren. Het staat bekend als een geneste klasse. Bijvoorbeeld,

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

Hier hebben we de klasse InnerClass gemaakt binnen de klas OuterClass . De InnerClass wordt de geneste klasse genoemd.


Toegangsleden

Om toegang te krijgen tot leden van de geneste klassen, moeten we eerst hun objecten maken.

1.Maak object van de buitenste klasse

OuterClass obj1 = new OuterClass();

Hier hebben we de obj1 . gemaakt object van de klasse OuterClass .

2. Maak een object van Inner Class

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

Je kunt zien dat we OuterClass.InnerClass . hebben gebruikt om de obj2 . te maken object van de innerlijke klasse. Dit komt omdat InnerClass is de geneste klasse van OuterClass .

Nadat we het object van individuele klassen hebben gemaakt, kunnen we de objectnaam en puntoperator gebruiken om toegang te krijgen tot leden van elke klasse.

Voorbeeld:C# geneste klasse

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();
 
    }
  }
}

Uitvoer

Car: Bugatti
Engine: Petrol Engine

In het bovenstaande programma hebben we de Engine . genest klasse binnen de Car klasse.

Binnen de Program class, we hebben objecten gemaakt van zowel de outer class als de inner class.

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

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

Vervolgens hebben we deze objecten gebruikt om toegang te krijgen tot methoden van elke klasse.

  • sportsCar.displayCar() - toegang krijgen tot de buitenste klasse-methode met behulp van het object van Car
  • petrolEngine.displayEngine() - toegang krijgen tot de innerlijke klasse-methode met behulp van het object van Engine

Opmerking :We hebben geen toegang tot de leden van de innerlijke klasse met behulp van het object van de buitenste klasse. Bijvoorbeeld

// error code
sportsCar.displayEngine();

Hier hebben we geen toegang tot de displayEngine() methode van de innerlijke klasse Engine met behulp van de sportwagen object van de buitenste klasse.


Toegang tot leden van de buitenste klas binnen de binnenste klas

We hebben toegang tot leden van de buitenste klasse binnen de binnenste klasse. Hiervoor gebruiken we een object van de outer class. Bijvoorbeeld

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();
    }
  }
}

Uitvoer

Brand: Bugatti

In het bovenstaande voorbeeld hebben we de Engine . genest klasse binnen de Car klas. Let op de lijn,

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

Hier hebben we het object van de klasse Car . gebruikt om toegang te krijgen tot veld merk .


Toegang tot statische leden van Outer Class Inside Inner Class

Als we toegang moeten hebben tot statische leden van de buitenste klasse, hoeven we het object niet te maken. In plaats daarvan kunnen we direct de naam van de buitenste klasse gebruiken. Bijvoorbeeld,

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();
    }
  }
}

Uitvoer

Brand: Bugatti

In het bovenstaande voorbeeld hebben we de Engine . genest klasse binnen de Car klas. Car heeft een statisch veld merk .

Hier hebben we toegang gekregen tot het statische veld brand binnen de innerlijke klasse (Engine ) met de naam van de buitenste klasse (Car ).

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

Buitenklasse overerven

Net als een gewone klasse kunnen we ook de buitenste klasse erven. Bijvoorbeeld,

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();
    }
  }
}

Uitvoer

Method of Computer class

In het bovenstaande voorbeeld hebben we de klasse Laptop . afgeleid uit de buitenklasse Computer .

Hierdoor hebben we toegang tot de display() methode van klasse Computer met behulp van het object van de klasse Laptop .


Innerlijke klasse overerven

In C# kunnen we ook de innerlijke klasse erven. Bijvoorbeeld,

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();
    }
  }
}

Uitvoer

Method of CPU class

In het bovenstaande voorbeeld hebben we de Laptop . afgeleid klasse uit de innerlijke klasse CPU .

Merk op dat we de naam van de buitenste klasse samen met de geneste klasse hebben gebruikt om de binnenste klasse te erven.

class Laptop : Computer.CPU {}

C Taal

  1. C# klasse en object
  2. C# Toegangsmodificaties
  3. C# Constructor
  4. C# statisch trefwoord
  5. C# abstracte klasse en methode
  6. C# geneste klasse
  7. C# Gedeeltelijke klasse en gedeeltelijke methode
  8. C# verzegelde klasse en methode
  9. C# Constructor Overbelasting
  10. Polymorfisme in C++
  11. Gegevensabstractie in C++