ozorro
Fevereiro 12, 2004, 3:40pm
#1
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…
ozorro
Fevereiro 12, 2004, 3:50pm
#3
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
cv1
Fevereiro 12, 2004, 4:03pm
#5
Expandindo um pouco: todo método numa interface é publico e abstrato (que é o contrário de final)
vamorim
Fevereiro 13, 2004, 1:25am
#6
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.
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!!
ozorro
Fevereiro 13, 2004, 9:07am
#8
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