Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Clase anidada de C#

C# Clase anidada

En este tutorial, aprenderá sobre la clase anidada en C# con la ayuda de ejemplos.

En C#, podemos definir una clase dentro de otra clase. Se conoce como una clase anidada. Por ejemplo,

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

Aquí, hemos creado la clase InnerClass dentro de la clase OuterClass . El InnerClass se llama la clase anidada.


Acceso a miembros

Para acceder a los miembros de las clases anidadas, primero debemos crear sus objetos.

1.Crear objeto de clase exterior

OuterClass obj1 = new OuterClass();

Aquí, hemos creado el obj1 objeto de la clase OuterClass .

2. Crear objeto de Inner Class

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

Puedes ver que hemos usado OuterClass.InnerClass para crear el obj2 objeto de la clase interna. Esto se debe a que InnerClass es la clase anidada de OuterClass .

Una vez que hemos creado el objeto de las clases individuales, podemos usar el nombre del objeto y el operador punto para acceder a los miembros de cada clase.

Ejemplo:clase anidada de 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();
 
    }
  }
}

Salida

Car: Bugatti
Engine: Petrol Engine

En el programa anterior, hemos anidado el Engine clase dentro del Car clase.

Dentro del Program class, hemos creado objetos tanto de la clase externa como de la clase interna.

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

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

Luego usamos estos objetos para acceder a los métodos de cada clase.

Nota :No podemos acceder a los miembros de la clase interna usando el objeto de la clase externa. Por ejemplo,

// error code
sportsCar.displayEngine();

Aquí, no podemos acceder al displayEngine() método de la clase interna Engine usando el deportivo objeto de la clase exterior.


Acceder a los miembros de la clase externa dentro de la clase interna

Podemos acceder a miembros de la clase externa dentro de la clase interna. Para esto usamos un objeto de la clase externa. Por ejemplo,

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

Salida

Brand: Bugatti

En el ejemplo anterior, hemos anidado el Engine clase dentro del Car clase. Fíjate en la línea,

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

Aquí, hemos usado el objeto de la clase Car para acceder al campo marca .


Acceso a miembros estáticos de la clase externa dentro de la clase interna

Si necesitamos acceder a miembros estáticos de la clase externa, no necesitamos crear su objeto. En su lugar, podemos usar directamente el nombre de la clase externa. Por ejemplo,

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

Salida

Brand: Bugatti

En el ejemplo anterior, hemos anidado el Engine clase dentro del Car clase. Car tiene un campo estático marca .

Aquí hemos accedido al campo estático marca dentro de la clase interna (Engine ) usando el nombre de la clase externa (Car ).

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

Herencia de clase externa

Como una clase normal, también podemos heredar la clase externa. Por ejemplo,

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

Salida

Method of Computer class

En el ejemplo anterior, hemos derivado la clase Laptop de la clase exterior Computer .

Debido a esto, podemos acceder al display() método de la clase Computer usando el objeto de la clase Laptop .


Heredar clase interna

En C#, también podemos heredar la clase interna. Por ejemplo,

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

Salida

Method of CPU class

En el ejemplo anterior, hemos derivado el Laptop clase de la clase interna CPU .

Observe que hemos usado el nombre de la clase externa junto con la clase anidada para heredar la clase interna.

class Laptop : Computer.CPU {}

Lenguaje C

  1. Clase y objeto de C#
  2. Modificadores de acceso de C#
  3. Constructor C#
  4. Palabra clave estática de C#
  5. Clase y método abstractos de C#
  6. Clase anidada de C#
  7. C# Clase parcial y método parcial
  8. Clase y método sellados de C#
  9. Sobrecarga del constructor de C#
  10. Polimorfismo en C++
  11. Abstracción de datos en C++