Informática, perguntado por deborahrayssa28, 1 ano atrás

EXPLICAÇÃO CLARA SOBRE INTERFACE E CLASSES ABSTRATAS EM JAVA.

Soluções para a tarefa

Respondido por Usuário anônimo
1
Saudades \ da \ \bold{POO} \ \cdots \ Enfim \ \longrightarrow

\bold{Interfaces} \ \Rightarrow \ S\~ao \ tipos \ espec\'ificos \ do \ Java. \\
\\
\ \ public \ interface \ [Nome\ escolhido] \

S\~ao \ como \ 'contratos'. \\ 
\\
N\~ao \ se \ instancia \ uma \ interface, \ nem \ se \ estende, \\
\ mas \ \bold{implementa-se}. \\ \\
\\
public \ class \ [Nome \ da \ classe] \ \bold{implements} \ [Sequ\^encia \ de \ Interfaces]

As \ Interfaces \ formam \ apenas \ m\'etodos \ e \ suas \ assinaturas. \\
\\
(Ao \ menos \ que \ se \ use \ o \ modificador \ \bold{(de'fault}). \\
\\

Utiliza - se \ interfaces \ para \ padronizar-se \ comportamentos. \\
\\
Ou \ seja, \ quando \ estamos \ preocupados \ em \ descrever \ o \ que \\
um \ m\'etodo \ gen\'erico \ faz, \ mas \ n\~ao \ como \ faz, \\
utilizamos \ as \ Interfaces. \ Jogamos \ assim \ a \ responsabilidade \\
da \ l\'ogica \ do \ m\'etodo \ para \ a \ classe \ que \ vai \ implementar \\
a \ interface.

Exemplo : \\
\\
Interface \ Voador \ \rightarrow \ M\'etodos \ : \ Voar, \ Planar, \ etc. \\
\\
Veja \ que \ desde \ avi\~ao \ at\'e \ lib\'elula \ voam. \ Logo, \ eles \\
s\~ao \ Voadores \ \rightarrow \ implementam \ Voador. \\
\\
Mas \ como \ cada \ um \ voa, etc, \ \'e \ de \ responsabilidade \ dele \\
de \ descrever. \\
A \ Interface \ apenas \ esclareceu \ o \ que \ um \ Voador \ faz, \ mas \\
n\~ao \ como. \ Veja \ que \ se \ cria \ um \ padr\~ao. \ Temos \ a \ certeza \\
de \ que \ todos \ os \ que \ voam \ ter\~ao \ as \ a\c{c}\~oes \ necess\'arias \\
implementadas \ ao \ assinarem \ um \ contrato \ com \ a \ Interface \ Voador. \\
\\
\'E \ como \ se \ falassem \ ''J\'a \ que \ voc\^e \ \'e \ Voador, \ vai \ ter \ que \\
descrever \ como \ voa, \ como \ plana, etc''. \\
\\
Exemplo \ em \ c\'odigo \ \Rightarrow \\ 
\\
public \ interface \ Voador \ [ \\
\\
public \ \bold{abstract} \ String \ voar(); \\\\

]

public \ class \ Aviao \ extends \ Aeronave \ \bold{implements} \ Voador [\\
\\
public \ String \ voar() [
\\
return \ new \ String('O \ avi\~ao \ usa \ as \ suas \ turbinas \ e \ decola!');
\\
]
\\
]

Veja \ que \ por \ isso \ usamos \ o \ modificador \ \bold{abstract} \ na \\
Interface, \ pois \ ele \ elimina \ a \ necessidade \ de \ se \ criar \\
corpo \ para \ o \ m\'etodo, \ dando \ essa \ responsabilidade \ para \\
a \ classe \ implementadora.

\bold{Classes \ Abstratas} \ \Rightarrow \ V\^em \ do \ modificador \ \bold{abstract} \\
no \ campo \ da \ classe : \\
\\
public \ \bold{abstract} \ [Nome \ da \ Classe] []

S\~ao \ classes \ n\~ao \ instanci\'aveis, \ ou \ seja, \ n\~ao \ \'e \ poss\'ivel \\
criar \ objetos \ dela \ a \ partir \ da \ diretiva \ \bold{new}.

Isso \ tem \ o \ prop\'osito \ de \ inutilizar \ classes \ super \ gen\'ericas \\
que \ n\~ao \ t\^em \ utilidade \ sem \ serem \ estendidas. \\
\\
Se \ eu \ tenho \ a \ classe \ M\'ovel, \ que \ apenas \ descreve \ 'objetos \ que \\
se \ movem'. \\
\\
N\~ao \ h\'a \ sentido \ usar \ objetos \ dessa \ classe, \ uma \ vez \ que \\
s\~ao \ super \ gen\'ericos. \\
\\
Faz \ mais \ sentido \ instanciar \ seus \ filhos, \ como \ Carro \ e \ Navio. \\
\\

public \ class \ Carro \ extends \ Movel \ \Rightarrow \ Classe \ com \\
prop\'osito \ de \ uso; \\
\\
public \ \bold{abstract} \ class \ Movel \ \Rightarrow \ Classe \ gen\'erica \\
sem \ prop\'osito \ de \ uso.

Ou \ seja, \ \bold{abstract} \ \'e \ para \ classes \ em \ que \ n\~ao \ se \ deseja \ instanciar.
Perguntas interessantes