Java / Spring - Herança, Polimorfismo e injeção de dependência

Índice
Estaremos olhando para 2 conceitos de programação Java (Herança Y Polimorfismo) para nos preparar para entender um conceito mais avançado chamado Injeção de dependência que é típico de Frameworks como Spring e Hibernate que são comumente usados ​​hoje e sobre os quais falaremos em tutoriais futuros.
Não, não se refere aos milhões que seu tio rico deixou para você quando finalmente morreu; é um conceito típico de programação Java e consiste em "herdar" campos e métodos pertencentes a um superclasse dentro de um subclasse.
Noções básicas de herança:
  • Uma classe que é derivada de outra classe é chamada subclasse (ou aula estendida, aula de filhas ou classe derivada) Além disso, a classe da qual o subclasse é derivado é chamado superclasse (também classe base ou classe de pais) Ao longo deste tutorial e dos tutoriais subsequentes, estarei usando os termos subclasse Y superclasse.
  • Especificamente em Java, exceto para a classe Objeto, TODAS as classes herdam diretamente para um SINGLE superclasse (herança simples). No caso de não definir explicitamente a superclasse, cada classe herda implicitamente da classe Objeto.
  • Uma classe pode herdar de outra classe que herda de outra classe que herda de outra classe até herdar da classe Objeto, é então dito que a referida classe "desce" de todas as classes na hierarquia para a classe Objeto.
Vamos tentar simplificar isso com um exemplo:
Suponha que temos as seguintes 3 classes no pacote de herança:
 herança de pacote; public class Dog {private int numberOfLegs; tintura de cabelo particular; Corrida de cordas privada; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } public String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } public String getRace () {return race; } public void setRace (String race) {this.race = race; } public void bark () {System.out.println ("O cachorro vai WOW"); }} 

 herança de pacote; classe pública Cat {número interno privadoOfLegs; tintura de cabelo particular; Corrida de cordas privada; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } public String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } public String getRace () {return race; } public void setRace (String race) {this.race = race; } public void meow () {System.out.println ("O gato faz MEOW"); }} 

 herança de pacote; classe pública Horse {private int numberOfLegs; tintura de cabelo particular; Corrida de cordas privada; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } public String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } public String getRace () {return race; } public void setRace (String race) {this.race = race; } public void neigh () {System.out.println ("O cavalo faz IIIIGGGHHHH"); }} 

Pode-se observar que as 3 classes geram 3 tipos diferentes de objetos, mas com múltiplas características semelhantes, na verdade, são exatamente iguais exceto pelos métodos bark, miau e relincho. Portanto, usando o conceito de herança, seria apropriado reescrever as características comuns em um superclasse e modificar cada subclasse para que eles adicionem apenas o método correspondente da seguinte forma:
[color = # a9a9a9]1[/Cor]
Nós criamos o superclasse Animal:
 herança de pacote; public class Animal {private int numberOfLegs; tintura de cabelo particular; Corrida de cordas privada; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } public String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } public String getRace () {return race; } public void setRace (String race) {this.race = race; }} 

[color = # a9a9a9]2 [/Cor]
Nós modificamos os 3 subclasses os existentes para herdar da classe Animal (usando a palavra-chave "extends") e apenas adicionar o método único:
 herança de pacote; public class Dog extends Animal {public void bark () {System.out.println ("Dog goes WOW"); }} 

 herança de pacote; public class Cat extends Animal {public void meow () {System.out.println ("O gato faz MEOW"); }} 

 herança de pacote; public class Horse extends Animal {public void neigh () {System.out.println ("Horse does IIIIGGGHHHH"); }} 

Desta forma culminamos com o tópico de "Herança" em Java, em breve continuaremos com o conceito de "Polimorfismo" que está intimamente relacionado com "Herança" e nos ajudará a entender o conceito de "Injeção de Dependência" para começar a entender o Framework "Spring".
Não se esqueça de deixar seus comentários, até a próxima!Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave