Interface

fala galera!

tenho uma perguntinha meio iniciante!..

o q é uma interface??
tipo tem um código assim:

public interface ValidateElement
{
   boolean validade();
   String getValidationError();
}

eu ja vi esse negocio de interface varias vezes… mas nao sei o q é!! :oops: :oops:

alguem pode me dar um help?

valeu!

interface eh uma parecido com uma classe abstrata (mas tem algumas diferencas), toda classe pode extender a uma classe (des de q n seja uma de suas subclasses), e implementar qntas classes for desejado…

a principal diferenca eh q com interface o construtor da superclasse n eh chamado…

as interfaces pode conter metodos q podem ser usados pelas suas subclasses e tb definir metodos abstratos, obrigando suas subclasses a sobreescrevelos…

no ex q vc postou, as subclasses serao obrigadas a escrever os seguitnes metodos:
boolean validade();
String getValidationError();

dai uma outra classe pode criar uma variavel do tipo ValidadeElement (mas n pode instanciar a interface), e pode instanciar as suas subclasses nessa variavel, entaum vc podera usar esses dois metodos sem problemas, afinal, a interface esta garantindo q eles existirao nas subclasses…

Quando vc cria uma interface, todos os métodos serão abstratos, mesmo que vc não coloque abstract… então, em uma interface não é permitido que um método seja implemetado. Resumindo… em uma interface terá somente as assinaturas dos métodos… :wink:

sim, e n eh possivel por um metodo “concreto” na interface?
ex:

public interface X{
 public void y(){
  System.out.println("...");
 }
}

pensei q pudesse…

blz… acho q entendi…
na interface eu só ponho a assinatura dos métodos?
eu nao posso programar nada la dentro?
tipo fazer contas, manipular dados, mesmo q imprima nada? tipo só retornando valores?

sempre os métodos serão vazios?

se for isso, qual é a utiliadade de fazer a interface?

valeu!

[quote=“DanielBadawi”]blz… acho q entendi…
na interface eu só ponho a assinatura dos métodos?
eu nao posso programar nada la dentro?
tipo fazer contas, manipular dados, mesmo q imprima nada? tipo só retornando valores?

sempre os métodos serão vazios?

se for isso, qual é a utiliadade de fazer a interface?

valeu![/quote]

Uma interface não pode ter métodos implementados… somente a assinatura… Uma das maiores vantagens, na minha opnião, é a padronização… ou seja, quando vc define uma interface, e classes a implementam, estas classes teem características em comum, só que são implementadas nas classes de maneira diferente… :wink:

a interface tb pode extender de outra interface, mas nunca implementar… :slight_smile:

só mais uma duvida… parece meio cretina mas vamos la… :lol:

tenho a seguinte interface:

Action.java

package actions;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface Action
{
    public ActionRouter perform(HttpServlet servlet,
                                 HttpServletRequest req,
                                 HttpServletResponse res)
                            throws java.io.IOException,
                                   javax.servlet.ServletException;


}

ela precisa ser compilada?? pq nao ta compilando…
olha o erro:

achei q fosse pq a classe ActionRouter nao estava escrito, entao fiz o ActionRouter.java e compilou perfeito o ActionRouter…

voltei ao Action.java tentei compilar, e nada… deu o mesmo erro…
o q pode ser q está errado?
os arquivos estão na mesma pasta!

valeu!

… o “.” (ponto) ta incluso no teu classpath? :roll: …ele representa o diretorio corrente na hr de compilar as classes, o javac vai procurar pela tua classe tb no diretorio corrente…

blz…
agora ta funcionando… valeu!