Interfaces

Cara eu estou estudando java e cheguei em uma parte que fala sobre interfaces, mas essa parte os caras deixaram bem por cima e não estou conseguindo entender, alguém poderia me explicar o que é e para que serve interface, e me dar algum exemplo. Não estou me referindo a interface de usuário.
Um exemplo que eu peguei no livor é esse :

public interface calculo
{
    return calculo;

}

Acho que era isso não estou bem lembrado o livro ficou em casa

Amigão,acho q esse link te ajuda:

http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&t=22795

Valew!!

ou então da uma olhada nesse aqui!

http://www.portaljava.com.br/home/modules.php?name=Forums&file=viewtopic&t=22795&sid=fdcde1ebdc22aea28f7829692881e73b

flw…

Cara pelo que eu entendi nesses links, a interface funciona como um tipo de variável que fica disponível para qualquer classe usar, como no exemplo:


public interface Jogar
 { 

          void chutar(); 
} 

public class Futebol implements Jogar 
{ 

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

Mas não entendi a funcionalidade, por exemplo não existe nada armazenado na interface e não existe nada sendo enviado para a interface, apenas está imprimindo um frase que eu poderia fazer assim:


 public class Futebol { 

          public static void main(String[] args)
         {
            System.out.println("Chutando uma bola!"); 
      } 
} 

Não entendi a idéia de funcionalidade de usar interface.
Alguém poderia me explicar?

Você usa interface quando quer que os métodos da interface sejam obrigatoriamente declarados na sua classe, mesmo que você não os implemente na sua classe, os deixando vazios, vai ter que declaralos.
Da uma lida aqui http://www.guj.com.br/java.tutorial.artigo.123.1.guj :joia:

Ok maluquo1 desculpa de estou sendo chato, estou tentando entender
Estudei o link que vc deixou e fiquei com a seguinte dúvida.
Lá tem o seguinte código como exemplo:

public interface Funcionario {
    public String getNome();
    public String getEndereco();
    public double getSalario();
}


public class Pessoa implements Funcionario {
    private String nome;
    private String endereco;
    private double salario;

    public String getNome() {
        return nome;
    }

    public String getEndereco() {
        return endereco;
    }

    public double getSalario() {
        return salario;
    }
}

Se eu entendi bem a classe Pessoa armazenou nas variáveis da interface os valores por exemplo:

public String getNome() {
return nome;
}

esse comando pega o valor da variável nome da classe Pessoa e armazena na variável getNome da interface. Assim outras classes podem usar esses valores acessando a interface.
É isso?
ou entendi errado?

Vish, vamo la vou tentar explicar!
Cara, imagine o seguinte:
Imagine que você tem uma Interface chamada Carro…
Irão existir 3 classes diferentes implementando essa interface Carro, elas serão chamadas de CarroEsportivo, CarroExecutivo, CarroConvencional blz?!

Imagine que a interface Carro tenha um metodo chamado motor e rodas por exemplo, todas as 3 classes classes que implementarão essa interface terão que declara esses metodos obrigatoriamente, mas elas poderão realizar a implementação desses metodos motor() e roda() de maneiras diferentes, pois eles são carros de tipos diferentes, um deles por exemplo terá um motor mais forte, o outro a roda maior algo desse tipo entendeu!?

Então eles terão funcionalidades em comum, porém eles poderão assumir comportamentos diferentes!..

Acredito que seja algo desse tipo!

Espero que te ajude!

Falou!

No caso as três classes, são obrigadas a usar os dois métodos, motor() e roda()?

Opa precisam sim, essa é a idéia da interface…
todos os métodos que foram declarados na interface devem ser obrigatoriamente declarados na classe, a implementação de cada um vem de acordo com a necessidade, mas declarados devem ser sim blz?!..
qualquer coisa posta ai!
Falou!

Para finalizar e ver se eu entendi.
Interface é um método que eu crio para ser o padrão usado por uma ou mais classes, os métodos da interface são obrigados a serem declarados na classe mesmo que não forem usados. Então na realidade interface não passa de um tipo padrão para deixar o código mais simples de ser entendido ou lido e até mesmo para seguir uma certa regra de igualdade entre as classes a serem declaradas.
É isso ou eu sou muito burro?
Cara se não for isso eu vou incomodar mais porque enquanto eu não entende eu não desisto!

É um jeito de forçar a pessoa a pensar em todos os aspectos envolvidos quando vai implementar a classe.

É como se ele dissesse “ô cara, você está se esquecendo que tem que implementar o correr()”, mesmo que você não queira implementar um correr() para o seu animal, mas é um jeito de te fazer lembrar que o seu animal “pode” correr.

Pessoal veleu pela força, com a ajuda de vocês entndi legal o que é interface. Já estou treinando.

Valeu

Cara,

Você me fez lembrar de mim mesmo quando cheguei no fórum… Custou pra eu ver utilidade em uma interface.

Eu já entendia como funcionava, mas ficava questionando se tinha sentido e o que isso agregava de valor no meu código. Até que com muito custo eu aceitei que é uma boa característica do java.

E ae feliperod
Cara realmente a minha dúvida era essa, agora enchergo melhor a utilidade das interfaces. Ainda tenho pequenas dúvidas estou desenvolvendo exercícios para melhorar.
Mas é como vc escreveu, foi dificil entender
Cara eu to com umja seguinte dúvida eu quero usar uma interface assim:

public interface calculo
{
   return double calculo(double aCalculo)
}

Quero criar uma classe que use essa interface, é possível usar interface com variáveis definidas dessa forma?

Você pode me fazer um exemplo? Estou tentando mas não estou conseguindo, não importa qual seja o exemplo o importante é que a interface seja com essas idéia

Alexandre,

Quando você cria uma interfaces, você deve definir apenas as assinaturas dos métodos e nunca implementar os métodos.

Neste caso você esta tentnado implementar funcionalidade ao métod, porém isso deve ser feito na classe que implementar essa interface.

você deve criar um método na sua interface da seguinte forma:

public interface Calculo{ public double calculo(double aCalculo); }

Essa seria a sua interface, e a implementação que faz esse método retornar alguma coisa seria feita na classe. Por exemplo:

[code]
public class FazCalculo implements Calculo{

   public double calculo(double aCalculo){
            //aqui você pode retornar qualquer objeto do tipo double
            return aCalculo 
   }

}[/code]

Você também pode definir atributos em uma interface. Mas o importante é planejar muito bem a sua interface, para que ela possa ser útil para mais de uma classe, caso contrário ela perde o sentido.

Dá uma olhada nesse artigo que vai te ajudar:

http://www.guj.com.br/java.tutorial.artigo.123.1.guj

feliperod
Valeu pela dica refresco legal a memória. Eu fiz um exercício da uma olhada cara por favor e vê se tem lógica ou se pelo menos eu consegui entender o conceito de interface, os códigos são esses:

public interface Calculo 
{
    public double calculo(double aCalculo); 
}


public class Interface implements Calculo
{
    private double entrada;
    private double saida;
    private double saldo;
    public Interface(double valor)
    {
        entrada = valor;
    }
       //aqui estou usando a interface
      public double calculo(double aCalculo)
      {
          saldo = entrada - aCalculo;
          return aCalculo;
      }   
      public double getSaldo()
      {
          double saldofinal = saldo;
          return saldofinal;
      }
  
}


public class TestaInterface {
    
    /** Creates a new instance of TestaInterface */
   public static void main(String[] args)
   {
       Interface teste = new Interface((double)500);
       teste.calculo(200);
      
       System.out.println("Saldo:"+ teste.getSaldo());
   }
   
    
}

Valeu mais uma vez pela força cara!

Ok Alexandre,

Você entendeu sim… Só vou colocar usn comentários e umas modificações que eu acho relevantes. Veja o seu código alterado abaixo:

public interface Calculo 
{
    //Aqui tá beleza - É isso mesmo
    public double calculo(double aCalculo); 
}

/* Eu não colocaria o nome da classe como Interface... interface é uma palavra reservada no Java. No seu caso vc usou Interface que é diferente, porém é bem próximo. Funcionaria sem problemas, mas pra não facilitar, vou mudar, ok.*/

public class UsaInterface implements Calculo
{
    private double entrada;
    private double saida;
    private double saldo;
    public Interface(double valor)
    {
        entrada = valor;
    }
       //aqui estou usando a interface
      public double calculo(double aCalculo)
      {
          saldo = entrada - aCalculo;
          //esse método tá certinho, mas você deveria ter retornado saldo né?
          return aCalculo;
      }   
      public double getSaldo(double aCalculo)
      {
          //para ter logica usar o metodo anterior, eu vou alterar esse aqui.
         //se você deixar assim, não precisava retornar nada no anterior.

          double saldofinal = this.calculo(aCalculo);
          return saldofinal;
      }
  
}


public class TestaInterface {
    
    /** Creates a new instance of TestaInterface */
   public static void main(String[] args)
   {
       Interface teste = new Interface((double)500);

       //Repare que devido a alteração nos metodos acima, agora só precisamos chamar um dos dois metodo. 
      //Veja como ficou.
       System.out.println("Saldo:"+ teste.getSaldo(200));
   }
   
    
}
1 curtida

feliperod
Cara valeu pela força, entendi. Já estou desenvolvendo alguns exercícios
Até + cara.