Anotações OCJP

Minhas anotações para o exame da Oracle (OCJP)

Interfaces e classes abstratas: Armadilha?

Começo os meus posts sendo bem direto: Até que ponto a herança em Java pode ser benéfica para aqueles que a usam?

Como diz aquela célebre frase: ” Grandes poderes trazem grandes responsabilidades.”

E é inegável que as interfaces trazem as responsabilidades para fazer nosso mundo melhor:

interface I{
void m1();
}

A interface acima deve ser implementada pela primeira classe concreta que a receber, o que seria facil de visualizar em um exemplo assim:

class C implements I{
public void m1(){
//...alguma coisa a programar
}
}

Porém, com a classe abstrata, a responsabilidade pode ser dividida. Muita atenção nesta parte:

interface J{
void m1();
String m2();
}

abstract class A implements J{
public void m1(){
//... algum código relevante
}
}

class C2 extends A implements J{
//m1 já foi implmentado por A, não é necessária mais a implementação

public String m2(){
//... mais código relevante
return "implementação de m2";
}

}

Pensei a princípio que daria erro, mas não, pois a classe C2 implementa os metodos m1 (pela classe A) e o método m2 (implementação na própria classe).

Mas o meu choque não parou por aí. Tinha muito mais a sair da manga do Sr. Java:

class C3{
void m1(){
System.out.println("m1.C3");
}
void m2(){
}
}
abstract class A2 extends C3{
abstract void m1();
}
class C4 extends A2{
void m1(){
System.out.println("m1.C4");
}
}
public class teste2{
public static void main(String args[]){
C3 c3 = new C4();
A2 a3 = new C4();
c3.m1();//saida m1.c4
a3.m1();//saída m1.c4
}
}

Não há erro algum neste código! O método m1 é redefinido como abstrato e depois e implementado pela classe C4.

E é isso, até a próxima!

About these ads

Uma resposta para “Interfaces e classes abstratas: Armadilha?

  1. Pingback: Interfaces e classes abstratas: Armadilha? | JornalJava

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 )

Imagem do Twitter

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

Foto do Facebook

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

Foto do Google+

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

Conectando a %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

%d blogueiros gostam disto: