Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Classe aninhada C#

Classe aninhada em C#


Neste tutorial, você aprenderá sobre a classe aninhada em C# com a ajuda de exemplos.

Em C#, podemos definir uma classe dentro de outra classe. É conhecido como uma classe aninhada. Por exemplo,

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

Aqui, criamos a classe InnerClass dentro da classe OuterClass . O InnerClass é chamada de classe aninhada.

Acessar membros


Para acessar membros das classes aninhadas, primeiro precisamos criar seus objetos.

1.Criar objeto da classe Outer
OuterClass obj1 = new OuterClass();

Aqui, criamos o obj1 objeto da classe OuterClass .

2. Criar objeto de classe interna
OuterClass.InnerClass obj2 = new OuterClass.InnerClass();

Você pode ver que usamos OuterClass.InnerClass para criar o obj2 objeto da classe interna. Isso ocorre porque InnerClass é a classe aninhada de OuterClass .

Uma vez que criamos o objeto de classes individuais, podemos usar o nome do objeto e o operador ponto para acessar os membros de cada classe.

Exemplo:classe aninhada 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();
 
    }
  }
}

Saída
Car: Bugatti
Engine: Petrol Engine

No programa acima, aninhamos o Engine classe dentro do Car classe.

Dentro do Program classe, criamos objetos da classe externa e da classe interna.
// object of outer class
Car sportsCar = new Car();

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

Em seguida, usamos esses objetos para acessar métodos de cada classe.

Observação :Não podemos acessar os membros da classe interna usando o objeto da classe externa. Por exemplo,
// error code
sportsCar.displayEngine();

Aqui, não podemos acessar o displayEngine() método da classe interna Engine usando o sportsCar objeto da classe externa.

Acessar membros da classe externa dentro da classe interna


Podemos acessar membros da classe externa dentro da classe interna. Para isso usamos um objeto da classe externa. Por exemplo,
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();
    }
  }
}

Saída
Brand: Bugatti



No exemplo acima, aninhamos o Engine classe dentro do Car classe. Observe a linha,
// inside Engine class
Car sportsCar = new Car();
Console.WriteLine("Brand: " + sportsCar.brand);

Aqui, usamos o objeto da classe Car para acessar o campo marca .

Acessar membros estáticos da classe externa dentro da classe interna


Se precisarmos acessar membros estáticos da classe externa, não precisamos criar seu objeto. Em vez disso, podemos usar diretamente o nome da classe externa. Por exemplo,
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();
    }
  }
}

Saída
Brand: Bugatti

No exemplo acima, aninhamos o Engine classe dentro do Car classe. Car tem um campo estático marca .

Aqui, acessamos o campo estático marca dentro da classe interna (Engine ) usando o nome da classe externa (Car ).
Console.WriteLine("Brand: " + Car.brand);

Herdando a classe externa


Como uma classe regular, também podemos herdar a classe externa. Por exemplo,
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();
    }
  }
}

Saída
Method of Computer class

No exemplo acima, derivamos a classe Laptop da classe externa Computer .

Por isso, podemos acessar o display() método da classe Computer usando o objeto da classe Laptop .

Herdando classe interna


Em C#, podemos herdar a classe interna também. Por exemplo,
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();
    }
  }
}

Saída
Method of CPU class

No exemplo acima, derivamos o Laptop classe da classe interna CPU .

Observe que usamos o nome da classe externa junto com a classe aninhada para herdar a classe interna.
class Laptop : Computer.CPU {}

Linguagem C

  1. Classe e objeto C#
  2. Modificadores de acesso C#
  3. Construtor C#
  4. Palavra-chave estática C#
  5. Classe abstrata e método C#
  6. Classe aninhada C#
  7. C# Classe Parcial e Método Parcial
  8. Classe e método selados em C#
  9. Sobrecarga do construtor C#
  10. Polimorfismo em C++