Nós já aprendemos os seguintes conceitos em JAVA:
Classe | Conjunto de códigos genéricos (que podem ser utilizados em qualquer situação) referente à um determinado processo, por exemplo; conectar num banco de dados, cálculos, interface gráfica, games, etc…
public class cachorro{ //blocos de códigos } |
Métodos | Ações programadas em uma classe. O que a classe faz!
public void latir(){ //blocos de códigos } |
Parâmetros | Valores passados para um método.
public void latir(int quantidade_de_latidas){ //blocos de códigos } |
Atributos | Variáveis criadas nas classes. Quais os dados que a classe utiliza para realizar as ações.
String nome_cachorro(); public class cachorro{ public void latir(int quantidade_de_latidas){ //blocos de códigos }} |
Instância | Utilização de uma classe em outra classe.
cachorro nome_objeto = new cachorro(); |
Objeto | Nome da instância de uma classe. No exemplo acima o nome do objeto é nome_objeto |
Encapsulamento | Dividir seu projeto em classes, de forma que uma classe não dependa da outra. |
Agora vamos aprender Herança para podermos aproveitar ainda mais o conceito de encapsulamento.
Herança
Considere a seguinte classe, com o método Hello()
public class JSaudacoes { public void Hello() { System.out.println("Olá!"); } }
Agora considere esta outra classe JDiscurso, com o método oi();
public class JDiscurso { public void oi() { System.out.println("Oi!"); }}
Podemos notar que as duas classes são semelhantes. Agora suponhamos que uma terceira classe necessite fazer uso destes dois métodos. Se estivemos programando a classe principal, teríamos que criar dois objetos, algo parecido com isso;
public static void main(String[] args) { JDiscurso jDiscurso = new JDiscurso(); JSaudacoes jSaudacoes = new JSaudacoes(); jDiscurso.oi(); jSaudacoes.Hello(); }
Aos olhos dos programadores iniciantes, a pergunta de “Por que não deixar tudo em uma classe só?” é eminente, mas em determinados projetos, o conceito de encapsulamento deve prevalecer, mesmo que isso, aparentemente, gere mais trabalho para você. Mesmo encapsuladas, as classes podem “ser juntadas” usando o conceito de Herança.
Se as classes JDiscurso e JSaudacoes são semelhantes podemos então fazer uso da Herança. Em O.O, Herança á uma classe derivada da outra.
Extends e Super
Vamos programar a classe JSaudacoes para herdar o código da classe JSaudacoes para isso usamos o parametro extends na classe, ficando assim;
public class JDiscurso extends JSaudacoes { public void oi() { System.out.println("Oi!"); } }
Agora temos que a classe JDiscurso herdou o código da classe JSaudacoes. A classe JSaudacoes passa ser uma super classe, pelo fato dela ser a fornecedora de códigos para a classe JDiscurso. JDiscurso por sua vez é denominada de sub classe ou, classe estendida.
Com as classes herdades, agora podemos reorganizar o código da classe principal, ficando assim;
Reescrita
Imaginemos agora que o método Hello() da super classe JSaudacoes por algum motivo mude de nome, isso é comum quando trabalhamos em equipes de desenvolvimento e com o padrão MVC.
Uma forma de prevenir eventuais problemas referente à mudança do nome do método é criar um override (reescrita) na classe JDiscurso
O resultado será este, faça as edições necessárias conforme imagem;
Prontinho! Agora seu código está 100% orientado à objetos.
Download do projeto: jheranca