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

Entendendo Classes Aninhadas em C#: Definição, Uso e Herança

Entendendo Classes Aninhadas em C#

Explore como definir, acessar e herdar classes aninhadas em C# com exemplos práticos que demonstram boas práticas.

Em C#, uma classe pode ser declarada dentro de outra classe. O tipo interno é referido como classe aninhada. Por exemplo:

class ClasseExterna { // ... membros externos class ClasseInterna { // ... membros internos } }

Este exemplo cria ClasseInterna dentro de ClasseExterna. O tipo interno é visível apenas dentro do tipo externo a menos que seu modificador de acesso permita o contrário.


Acessando Membros de Classe Aninhada

Para trabalhar com tipos aninhados, você primeiro instancia cada classe separadamente.

1. Crie uma instância da classe externa

ClasseExterna externa = new ClasseExterna();

Aqui, externa é um objeto de ClasseExterna.

2. Crie uma instância da classe aninhada

ClasseExterna.ClasseInterna interna = new ClasseExterna.ClasseInterna();

Como ClasseInterna está aninhada dentro de ClasseExterna, você a qualifica com o nome do tipo externo.

Uma vez instanciada, você pode chamar membros através da referência do objeto.

Exemplo: Classe Aninhada com Métodos

using System; namespace NestedClassDemo { public class Carro { public void ExibirCarro() => Console.WriteLine("Carro: Bugatti"); public class Motor { public void ExibirMotor() => Console.WriteLine("Motor: Motor a Gasolina"); } } class Program { static void Main(string[] args) { Carro carroEsportivo = new Carro(); carroEsportivo.ExibirCarro(); Carro.Motor motorGasolina = new Carro.Motor(); motorGasolina.ExibirMotor(); Console.ReadLine(); } } }

Saída

Carro: Bugatti Motor: Motor a Gasolina

O exemplo mostra como criar objetos tanto da externa Carro quanto da aninhada Motor e invocar seus métodos.

Note que você não pode chamar um método do tipo aninhado diretamente da instância externa:

// Inválido carroEsportivo.ExibirMotor();

Acessando Membros da Classe Externa de Dentro de uma Classe Aninhada

Classes aninhadas podem referenciar membros de seu tipo container. Você pode usar uma instância do tipo externo ou o nome do tipo externo para membros estáticos.

Usando uma Instância para Acessar Membros de Instância

using System; namespace NestedClassDemo { public class Carro { public string Marca = "Bugatti"; public class Motor { public void MostrarMarca() { Carro carro = new Carro(); Console.WriteLine("Marca: " + carro.Marca); } } } class Program { static void Main(string[] args) { Carro.Motor motor = new Carro.Motor(); motor.MostrarMarca(); Console.ReadLine(); } } }

Saída

Marca: Bugatti

Acessando Membros Estáticos Sem Instanciação

using System; namespace NestedClassDemo { public class Carro { public static string Marca = "Bugatti"; public class Motor { public void MostrarMarca() { Console.WriteLine("Marca: " + Carro.Marca); } } } class Program { static void Main(string[] args) { Carro.Motor motor = new Carro.Motor(); motor.MostrarMarca(); Console.ReadLine(); } } }

Saída

Marca: Bugatti

Herança Envolvendo Classes Aninhadas

Classes aninhadas podem participar de herança como qualquer outro tipo.

Derivando uma Classe de uma Classe Externa

using System; namespace NestedClassDemo { class Computador { public void Exibir() => Console.WriteLine("Método da classe Computador"); public class CPU { // Membros adicionais podem ser adicionados aqui } } class Notebook : Computador { // Notebook herda todos os membros de Computador } class Program { static void Main(string[] args) { Notebook notebook = new Notebook(); notebook.Exibir(); Console.ReadLine(); } } }

Saída

Método da classe Computador

Derivando uma Classe de uma Classe Aninhada

using System; namespace NestedClassDemo { class Computador { public class CPU { public void Exibir() => Console.WriteLine("Método da classe CPU"); } } class Notebook : Computador.CPU { // Notebook herda membros de Computador.CPU } class Program { static void Main(string[] args) { Notebook notebook = new Notebook(); notebook.Exibir(); Console.ReadLine(); } } }

Saída

Método da classe CPU

Ao herdar uma classe aninhada, você deve qualificar o tipo com seu nome de classe externa, ex: Computador.CPU.

Linguagem C

  1. Classes e Objetos em C#: Fundamentos para POO Robusta
  2. Entendendo Modificadores de Acesso em C#: Public, Private, Protected, Internal e Mais
  3. Construtores em C#: Tipos, Exemplos e Padrões Avançados
  4. Palavra-chave Static em C#: Dominando Variáveis, Métodos e Classes Estáticas
  5. Dominando Classes e Métodos Abstratos em C#: Guia Prático
  6. Entendendo Classes Aninhadas em C#: Definição, Uso e Herança
  7. Entendendo Classes e Métodos Parciais em C#
  8. Dominando Classes e Métodos Sealed em C#: Quando Usar, Exemplos Claros e Segurança de Código
  9. Dominando Sobrecarga de Construtores em C#
  10. Entendendo Polimorfismo em C++: Guia Prático