Podemos declarar um método em uma interface como private, static ou final? O que ocorrerá?

10 respostas
gp7junior

Bem a questao agora é outra, mas tambem veio do mesmo lugar da anterior a respeito de construtores em interfaces.

Bem o que voces acham ? Podemos declarar um método em uma interface como private, static ou final? O que ocorrerá em cada um dos casos?

obrigado a todos.

10 Respostas

L

gp7junior:
Bem a questao agora é outra, mas tambem veio do mesmo lugar da anterior a respeito de construtores em interfaces.

Bem o que voces acham ? Podemos declarar um método em uma interface como private, static ou final? O que ocorrerá em cada um dos casos?

obrigado a todos.

Cara, desculpa ser chato, mas pq vc mesmo não cria uma intreface e testa essas condições?

Mas a resposta para todos os casos é não por um motivo muito obvio! Como vc vai reescrever um método private e final! E static é um método de classe…e vc está numa interface

Barroso

Todos os métodos da interface são implicitamente public e abstract.
Os métodos não podem ser estáticos.
Já que os métodos são abstract, não podem ser final, native, stricfp ou synchronized.
Todas as variáveis definidas em uma inteface devem ser públicas, estáticas e finais.

A

Olha, quando vc declara um interface assim :

interface Testavel {
void teste();
void imprime(String letras);
}

o compilador implicitamente faz com que seus métodos fiquem assim :

public abstract void teste();
public abstract void imprime(String letras);

e ao implementar esse interface “Testavel” vc DEVE implementar seus métodos e como TODOS os métodos das interfaces são marcados como abstract (implicitamente) vc não pode declara - los como final.
Uma pergunta que vc pode fazer, tb, é "E se em uma interface eu declarar meus métodos com public abstract, o código irá compilar "? A resposta é sim, embora não seja necessário.
Ta jóia ? :smiley:

LPJava

bom eu tb concordo com Artur Drummond seria mais rapido e facil vc testar e ia ver o resultado… agora se sua duvida eh pq nao posso declarar um metodo na interface como final… ou static? ai seria outros 500…
mas respondendo final significa que os metodos nao podem ser herdados… e na interface os metodos sao herdados implicitamente para a class que implementa… a interface eh um contrato onde a class concreta deve cumprir… com a interface… alugue o carro e vc deve seguir o contrato… da locadora hehe!!

ViniGodoy

Acho que o caso aqui não é saber que o compilador da erro, mas imaginar a suposição e tentar responder a pergunta. Se eu fosse o professor, não aceitaria uma resposta do tipo “porque não compila”, ou “porque o java não deixa”. Nesse caso, tentar compilar o código não resolveria o problema.

No caso, é o que o colega falou. Não adianta criar métodos private ou final nas interfaces porque você não tem como sobrescreve-los… ou seja, não teriam sentido.

Já os métodos static é porque se aplicam a classes e, conforme citamos no outro post que você falou, interfaces representam um contrato entre objetos. Métodos de classe não podem ser sobrescritos ou herdados.

E é por não ter sentido que o compilador não deixa, não por tirania da Sun…

eltonplima

É incrível o nível de “profissionais” que estas faculdades em especial as particulares estão formando.
Sei que o que vou falar não vai mudar em nada o modo de pensar/ver das pessoas, mas no meu caso, ficaria com um tremendo peso na consciência em saber que estou me “escorando nos outros” para poder terminar o curso, e ficar apenas “empurando com a barriga”.
Foruns são feitos para tirar dúvidas “cavernosas”, e não para ensinar a dar todos os passos iniciais na programação, se alguém não consegue abrir uma IDE e digitar umas poucas linhas de código e ler a mensagem que a IDE vai repassar, o que essa pessoa vai fazer quando “terminar” o curso?
Na minha opnião deveria haver um teste rigoroso no final de todos os cursos superiores, e enquanto o aluno não passasse neste não receberia seu diploma, garanto que de cara não sairiam nem sequem 10%. Isso seria uma ótima forma de acabar com a concorrência desleal que temos hoje, onde vemos programas cheios de falhas(verdadeiros queijos suíços por fora e por dentro) sendo vendidos como frutas em uma feira popular, enquanto os verdadeiros programas que deveriam estar ganhando o mercado ficam “perdidos” e sofrendo uma desvalorização desenfreada.
Desculpem este desabafo, mas infelizmente a nossa realidade é muito cruel e sinceramente, é doloroso ver que você investe tanto tempo, dinheiro e dedicação para se formar e outros que chegaram ao fim “nas costas dos outros” as vezes chegam a te passar a perna, simplesmente por que conseguiram o diploma “igual” a você.
Não sei isso é uma particularidade brasileira, mas se la fora as coisas forem do mesmo jeito, em breve programador será considerada uma profissão qualquer graças aos “programadores feitos nas coxas”.

LPJava

elton, o MEC está pouco se lichando para isso, o q ela quer é aprovar curso e curso e $$$ com isso mais nada… e outra… o problema nao está na faculdade particular/publica em si… e sim na pessoas… nao adianta eu ti dar as ferramentas e vc nao saber como usar… nao adianta estudar nas faculdades mais conceituadas se vc nao dar sangue para o seu curso ou sua area de atuação… e ta acostumado de pegar tudo prontinho e se enganar… porém no mercado a coisa é diferente e ele é cruel, se o cara quer ter um “boa qualidade de vida”, uns trocado na conta razoavel que ele possa se sentir confortavel e comprar o q ele sente prazer… e oferecer um conforot para si e sua familia tem ralar e muito… senao vai para o BBB e em 3 meses pode sair de la com um bom real… no bolso q se for bom administrador consegue multiplicar caso contrario vai ficar pior do que quando entrou…

hehe!

eltonplima

Concordo com você LPJava, mas com certeza a instituição tem seu dever, e deve ou pelo menos deveria cumpri-lo.
Quanto a questão da instituição pública ou privada, eu fiz esta comparação por que na pública o que o ocorre na maioria dos casos é o seguinte:
Os professores não estão nem ai, simplesmente “jogam” o assunto e o aluno que se f*** para estudar e passar na prova, e como resultado temos o que? Alunos com um nível de conhecimento bem mais avançado que nas públicas, onde 90% quer tudo mastigado.
O que falta é um “filtrador” de alunos e professores, mas… infelizmente isso é algo que fica apenas no sonho mesmo, por que o mercado é mesmo cruel como você mesmo disse.

Eu faço sistemas de informação em uma faculdade particular, e vou lhe ser sincero é desanimador ver coisas como isso que está aqui no forum, e é mais desanimador ainda saber que este é o comportamento da maioria esmagadora. O que eles querem mesmo é ir para o barzinho da esquina e encher a cara.

Marky.Vasconcelos

Uma interface declara métodos para seem sobreescritos você consegue sobreescrever um método private, final ou static?

LPJava

nao!
private = nao é herdado
final = nao pode ser subscrito
static = pode ser redefinido, que nao é o mesmo que subscrito…

Criado 16 de março de 2007
Ultima resposta 18 de abr. de 2008
Respostas 10
Participantes 8