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 Java, 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.
Java
Classe #1 – Principal
package org.desenvolvimentoaberto; public class Principal { public 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(); System.out.println(); // Construtor Override Bicicleta bike2 = new Bicicleta("XA 200", "Aluminio", "Pastilhas", "Aluminio"); bike2.bicicleta(); System.out.println(); // 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(); } }
Classe #2 – Bicicleta
package org.desenvolvimentoaberto; public 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 () { System.out.println(" Bicicleta:" + modelo ); System.out.println(" Quadro:" + quadro ); System.out.println(" Rodas:" + rodas ); System.out.println(" Freios:" + freios ); } }
Classe #3 – BicicletaMontanha (Sub Classe)
package org.desenvolvimentoaberto; public class BicicletaMontanha extends Bicicleta { public String marchas; public String amortecedores; public String garrafa; public String gps; //Metodo Override public void bicicleta () { System.out.println(" Bicicleta:" + modelo ); System.out.println(" Quadro:" + quadro ); System.out.println(" Rodas:" + rodas ); System.out.println(" Freios:" + freios ); System.out.println(" Marchas:" + marchas ); System.out.println(" Amortecedores:" + freios ); System.out.println(" Garrafa:" + garrafa ); System.out.println(" Gps:" + gps ); } BicicletaMontanha() { } }