Interface Runnable

Pessoal, pode parecer bobagem minha, mas…pergunto:
Se uma Interface é tipo um molde / contrato para demais classes q a implemetam, por que existem o método abstrato:
[color=“blue”]public abstract void run();[/color]
na interface Runnable ? sabendo q todo metodo em uma interface é:
public + final + static ?

nao poderia ser : void run(); ???

Grato

[quote=“ozorro”]sabendo q todo metodo em uma interface é:
public + final + static ?[/quote]

Métodos em uma interface não são final… Constantes é que são.

Poderia sim… :wink:

perdão: em uma interface variaveis de instancia são:

public + static + final

e para métodos assinados são:

public + abstract

o q causa é: pra q colocar:
public abstract void run(); {
}
não poderia ser + claro:
[color=“red”] void run(); {
}[/color]

aí,aí!!

[quote=“ozorro”]o q causa é: pra q colocar:
public abstract void run(); {
}
não poderia ser + claro:
[color=“red”] void run(); {
}[/color]
[/quote]

Clareza de código :!:
É parecido com usar a palavra-chave this onde não precisa:

public String getNome() { return this.nome; }

[]'s

Expandindo um pouco: todo método numa interface é publico e abstrato (que é o contrário de final) :smiley:

O que é clareza? Ausência de código desnecessário ou presença explícita de código default?
Bom, pense num principiante. Quanto menos informação ele precisa para entender o código, mais claro ele o é. É por isso que defendo a forma explícita. :wink:

Isso é coisa de quem usa Eclipse.

colocar abstract num médoto de interface é a maior redundância que eu já vi.

Eu nem sabia que todos os métodos eram public!!! É verdade mesmo isso?? E se a interface não for pública??

E uma pentelhice (eu reconheço): variável de instância não pode ser static.

[]s!!

dukejeffrie e verdade sim, em uma Interface e designada da seguinte forma:

int intCodFunc = 1;
quando vc for implementar na sua classe ela sera vista como

public static final intCodFunc =1;

em ex:
public interface InterfaceFuncionario{
int intCodEmpresa = 1;
}

public class Empresa
implements InterfaceFuncionario{

   public static void main(String[] args) {
   System.out.println("CÓDIGO EMPRESA..:" + intCodEmpresa );
   }

}
entendeu? pois é…qdo falei da classe Runnable
tem: public abstract void run();
pra q! sei lá, se um metodo ja visto como:
public abstract

simplesmente posso colocar
void run();
e morreu Maria Prea