JAVA: Herança, super clase, extends e reescrita.

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

overide

 

O resultado será este, faça as edições necessárias conforme imagem;

screenshot_1

 

Prontinho! Agora seu código está 100% orientado à objetos.

Download do projeto: jheranca

Deixe seu comentário