Classes – Inheritance, Override e This – C#

Publicado: 16 de fevereiro de 2014 em C#

Inheritance (herança)

Programação orientada a objetos permite que classes possam herdar estados e comportamentos comuns usados de outras classes. Neste exemplo, bicicleta torna-se agora a superclasse de MountainBike. Na linguagem de programação, cada classe é permitido ter uma superclasse direta, e cada superclasse tem o potencial para um número ilimitado de subclasses.

Override

Métodos Override (substituição), em programação orientada a objeto, é um recurso de linguagem que permite que uma subclasse ou classe filha possa fornecer uma implementação específica de um método que já é fornecido por uma de suas superclasses ou classes pai.

A implementação Override das subclasses substitui a implementação na superclasse, fornecendo um método que tem o mesmo nome, mesmos parâmetros ou assinatura, e mesmo tipo de retorno como o método na classe pai.

This

É usado para fazer auto-referência ao próprio contexto em que se encontra e sempre será a própria classe ou o objeto já instanciado.

Dentro de um método de instância ou um construtor, this é uma referência para o objeto atual – o objeto cujo método ou construtor é chamado. Você pode se referir a qualquer membro do objeto atual de dentro de um método de instância ou um construtor usando this.

Exemplo:

Neste exemplo damos a classe MountainBike todos os mesmos campos e métodos da classe bicicleta, e ainda permite que seu código se concentre exclusivamente sobre as características que a tornam única. Isso faz do código de suas subclasses fáceis de ler. Usamos metodos Override neste exemplo de duas maneiras, para substituir um metodo da subclasse e adicionar mais um construtor com parametros. O comando this referencia os campos da própria classe.

No entanto, você deve tomar cuidado para documentar corretamente o estado e o comportamento que cada superclasse define, uma vez que o código não irá aparecer no arquivo de origem de cada subclasse.

C#

Classe #1 – Principal

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesenvolvimentoAberto {

     class Program
     {
         static void Main(string[] args)
         {

            // Metodo com Construtor Default
            Bicicleta bike1 = new Bicicleta();
            bike1.modelo = "ZR069";
            bike1.quadro = "Ferro";
            bike1.rodas  = "Ferro";
            bike1.freios = "Pastilhas";
            bike1.bicicleta();

            Console.WriteLine();

            // Construtor Override
            Bicicleta bike2 = new Bicicleta("XA 200", "Aluminio", "Pastilhas", "Aluminio");
            bike2.bicicleta();

            Console.WriteLine();

            // Herança - Montain Bike
            BicicletaMontanha bike3 = new BicicletaMontanha();
            bike3.modelo        = "Attack 500";
            bike3.quadro        = "Fibra de Carbono";
            bike3.rodas         = "Aluminio";
            bike3.freios        = "Disco";
            bike3.amortecedores = "R3000";
            bike3.garrafa       = "Aluminio 500ml";
            bike3.marchas       = "18 Velocidades";
            bike3.gps           = "Discovery 2.5";

            // Metodo Override
            bike3.bicicleta();

            Console.ReadKey();
         }
     }
 }

Classe #2 – Bicicleta

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesenvolvimentoAberto
 {
     class Bicicleta
     {
       public string modelo;
       public string quadro;
       public string freios;
       public string rodas;

       // Construtor Default
       public Bicicleta()
       {}

       // Construtor Override

       public Bicicleta (string modelo, string quadro, string freios, string rodas)
       {
        this.modelo = modelo;
        this.quadro = quadro;
        this.rodas = rodas;
        this.freios = freios;
       }

       public void bicicleta ()
       {
        Console.WriteLine(" Bicicleta:" + modelo );
        Console.WriteLine(" Quadro:" + quadro );
        Console.WriteLine(" Rodas:" + rodas );
        Console.WriteLine(" Freios:" + freios );
       }

   }
}

Classe #3 – BicicletaMontanha (Sub Classe)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesenvolvimentoAberto
 {
     class BicicletaMontanha : Bicicleta
     {
           public string marchas;
           public string amortecedores;
           public string garrafa;
           public string gps;

         //Metodo Override
         public void bicicleta ()
           {
               Console.WriteLine(" Bicicleta:" + modelo );
               Console.WriteLine(" Quadro:" + quadro );
               Console.WriteLine(" Rodas:" + rodas );
               Console.WriteLine(" Freios:" + freios );
               Console.WriteLine(" Marchas:" + marchas );
               Console.WriteLine(" Amortecedores:" + freios );
               Console.WriteLine(" Garrafa:" + garrafa );
               Console.WriteLine(" Gps:" + gps );
             }
             public BicicletaMontanha()
           {
           }
    }
 }
Anúncios
comentários
  1. Lincoln Pires disse:

    Hey, muito legal o artigo, mas acredito que o compilador ficará confuso na “Classe #3 – BicicletaMontanha (Sub Classe)”. Ele não vai entender se você está querendo usar OVERRIDE ou se está querendo usar HIDING.
    Pra override, acredito eu que explicitamente deve-se usar a palavra reservada “override”:

    public override void bicicleta() { … }

    E pra hiding, acredito que deve-se usar a palavra new:

    new public void bicicleta() { … }

    Espero ter contribuído, obrigado, abraço.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s