Extends e implements

boa noite a todos, sem kerer parecer um completo idiota… to com uma tremenda duvida aki, n encontro nenhuma material que fale sobre ‘implements’ para q serve afinal ? qual a diferenca entre ele e o extends ?

grato,
Edu

Oi AnjoSacana, seja bem vindo ao Portal Java! :wink:

Bem a diferença é:

:arrow: extends

Indica que certa classe herdara todos os atributos e métodos de uma classe (classe pai, super-classe…).

Exemplo:

   public class Animal { //Exemplo clássico :)
  
   private String latir;

   public String latindo(String latir) {
    System.out.println("Late!!!");
  }
}

   public class Cachorro extends Animal {

   latir = latir + "auau";
   latindo(latir);
}

:arrow: implements

Vai ser a classe que irá implementar uma Interface

Exemplo:

[code] public interface Jogar {

      void chutar();

}

      public class Futebol implements Jogar {

      void chutar() {
        System.out.println("Chutando uma bola!");
  }

}
[/code]

Implements - Implementa alguma class

extends - serve para herdar ações de outras classes

A grosso modo…

Falando algo um pouco mais detalhado sobre o implements , quando você implementa uma interface você vai ter que obrigatoriamente declarar todos os metodos existentes nesta interface, a opção de implementa-los ou não é do desenvolvedor, mas todos devem ser declarados mesmo que de forma vazia.

Usando o exemplo do nosso amigo Reifel, declarei um metodo na interface Jogar chamada tocar(), porém a implementação dela se torna opcional na classe Futebol, mas a declaração dela é torna obrigatoria!

public interface Jogar {

          void chutar();
          void tocar();


}

          public class Futebol implements Jogar {

            void chutar() {
              System.out.println("Chutando uma bola!");
           }
            void tocar(){
            }
         } 

Espero ter ajudado!

Você pode ter:
A) Classe “X” implementando uma ou mais interfaces.
B) Classe “X” extendendo uma única classe.
C) Interface “X” extendendo uma ou mais interfaces.

Eu não vejo, pelo menos em termos práticos, diferenças entre A e B (exceto que A pode implementar várias).
Nos dois casos, a classe X deve implementar os métodos que ainda não foram implementados, caso X seja não-abstrata. Se for abstrata, não é obrigatório implementar.
A e B podem ser combinados.

Em C, a interface não vai implementar nenhum dos métodos (óbvio, interfaces não têm variáveis nem implementações de métodos). A primeira classe não-abstrata que implementar a interface X, vai ter que implementar todos os métodos dela.

É um pouco estranho.

agora ficou mais claro, galera, vlw msm pela forca :cool:

só uma perguntinha qual a vantagem então de de implementar um interface ja , pelo que entendi temos que declarar todos os todos implementando ou não?

não é apenas mais trabalho , ou isso facilita no desenvolvimento?

Eh verdade…eu tbm estou vendo essa parte em java…e ñ estou intendendo essa parte…entendo q eu falo eh … quando eu vou usar a interface de classe ou seja o implements…eu sei como eu faço ela td direitinho…+ como o nosso amigo falou…eu ñ sei pq usar ela…ja q no meu modo de ver…dar + trabalho usar ela do q o de herda…ja q eu ñ necessito de usar tds os metodos…

Galera…valeu pela ajuda

[quote=“ikarus_br”]só uma perguntinha qual a vantagem então de de implementar um interface ja , pelo que entendi temos que declarar todos os todos implementando ou não?

não é apenas mais trabalho , ou isso facilita no desenvolvimento?[/quote]

Voce nao precisa implementar os membros que herda de uma classe (“via extends”)

O Implements é uma meneira de forçar que se seja re-escrito alguns metodos.

[quote=“JBuilder”]Implements - Implementa alguma class

extends - serve para herdar ações de outras classes

A grosso modo…[/quote]