C # Herança
Herança é uma programação orientada a objetos é um dos conceitos mais importantes. Herança nos permite definir uma classe com base em outra classe para definir uma classe, o que torna a criação e manutenção de aplicações muito mais fácil. Mas também propício para a reutilização de código e reduzir o tempo de desenvolvimento.
Quando você cria uma classe, os programadores não precisa completamente re-escrever novos membros de dados e funções de membro, você só precisa criar uma nova classe que herda os membros existentes da classe pode ser. Aclasse base existente é chamado de uma classe, a nova classe é chamada de classe derivada.
Realização da idéia de herançaque pertence (IS-A) relacionamento.Por exemplo, um mamíferopertence (IS-a) Os animais, cães pertencentes a (IS-A)de mamíferos, e, portanto,pertencem aocão(IS-a)animais.
Base e classes derivadas
Uma classe pode ser derivada de mais de uma classe ou interface, o que significa que ele pode herdar várias classes base ou interfaces de dados e funções.
Criar uma classe derivada em C # sintaxe é a seguinte:
<Acess-especificador> class <BASE_CLASS> { ... } classe <Derived_Class>: <BASE_CLASS> { ... }
Suponha-se, há uma forma de classe base, que é o retângulo classe derivada:
using System; InheritanceApplication namespace { Forma classe { setWidth public void (w int) { largura W =; } setHeight public void (int h) { height = h; } protegidas largura int; protegidas altura int; } // Classe classe derivada Retângulo: Forma { getArea int público () { retornar (largura * altura); } } classe RectangleTester { static void Main (string [] args) { Retângulo Rect = new Rectangle (); Rect.setWidth (5); Rect.setHeight (7); // Área de impressão da Console.WriteLine objeto ( "Área Total: {0}", Rect.getArea ()); Console.ReadKey (); } } }
Quando o código acima é compilado e executado, ele produz os seguintes resultados:
Área total: 35
Inicializar a classe base
classe derivada herda variáveis de membro e métodos de membro da classe base. Portanto, o objeto pai deve ser criado antes um objeto de sub-classe foi criada. Você pode inicializar a classe pai na lista de inicialização membro.
O programa a seguir demonstra este ponto:
using System; RectangleApplication namespace { classe Retângulo { // Variáveis membro protegido comprimento duplo; protegidas largura dupla; Retângulo pública (duplo l, dupla w) { comprimento = L; largura W =; } GetArea public double () { retornar comprimento * largura; } Exibição public void () { Console.WriteLine ( "Duração: {0}", comprimento); Console.WriteLine ( "width: {0}", largura); Console.WriteLine ( "Tamanho: {0}", GetArea ()); } } // Retângulo classe End classe Tabletop: Retângulo { custo duplo privado; Tabletop pública (duplo l, dupla w): base (l, w) {} GetCost public double () { custo dupla; custo = GetArea () * 70; voltar custo; } Exibição public void () { base.Display (); Console.WriteLine ( "Custo: {0}", GetCost ()); } } classe ExecuteRectangle { static void Main (string [] args) { Tabletop t = new mesa (4.5, 7.5); t.Display (); Console.ReadLine (); } } }
Quando o código acima é compilado e executado, ele produz os seguintes resultados:
Comprimento: 4,5 Largura: 7,5 Área: 33.75 Custo: 2362,5
C # herança múltipla
O C # não suporta herança múltipla.No entanto, você pode usar a interface para conseguir a herança múltipla. O programa a seguir demonstra este ponto:
using System; InheritanceApplication namespace { Forma classe { setWidth public void (w int) { largura W =; } setHeight public void (int h) { height = h; } protegidas largura int; protegidas altura int; } // PaintCost Classe base PaintCost interface pública { int getCost (área int); } // Classe classe derivada Retângulo: Forma, PaintCost { getArea int público () { retornar (largura * altura); } public int getCost (int área) { área de retorno * 70; } } classe RectangleTester { static void Main (string [] args) { Retângulo Rect = new Rectangle (); área int; Rect.setWidth (5); Rect.setHeight (7); área Rect.getArea = (); // Área de impressão da Console.WriteLine objeto ( "Área Total: {0}", Rect.getArea ()); Console.WriteLine ( "Paint custo total: $ {0}", Rect.getCost (área)); Console.ReadKey (); } } }
Quando o código acima é compilado e executado, ele produz os seguintes resultados:
Área total: 35 Pinte Custo total: $ 2450