Questão de exame: Interfaces

9 respostas
M

ai vai uma sobre interfaces, quem sabe interpretar corretamente oq esse código faz? Como sempre, não vale compilar! …la no exame vcs não terão o javac pra ajudar… vamo la galera, essa ai elaborei sozinho, aborda detalhes importantes de interfaces!

package com.foo;

class FooClass implements F1, F2 { 	
	
   public void FooClass() 
   {
      System.out.println( "Construtor" );
   }
	
   void doStuff() 
   {
      System.out.println( "metodo doStuff()" );
   }
	
   static public void main( String[] args )
   {
      new FooClass().doStuff();
   }		

}

interface F1 {

   abstract void doStuff();

}

abstract interface F2 extends F3 {

   void doStuff();

}

interface F3 {

   public void FooClass();

}

9 Respostas

M

bom pelo q eu entendi, num vai compilar, pq eu li no tutorial da sun, q uma classe abstrata num precita ter methodo abstrato, mas um metodo abstrado precisa estar num classe abstrata.
entaum, lá no interfce F1 tem um metodo abstrado, mas q num tá numa interface abstrada. ai eu creio q naum compila

se disse besteira, foi mal ae

falow

M

marocos… bem, esta errado cara… e um tanto longe da resposta, os métodos de interface são implicitamente abstratos… :smiley: quem mais? quem mais???

R

Bem, ou ele vai dar erro por causa da duplicidade do método doStuff(), ou vai imprimir “método do Stuff()”.

To em dúvida…

M

tb não!.. não tem como ter esses problemas de herança múltipla… o método só tem a mesma assinatura nas duas interfaces, elas não conhecem nada da implementação dele… então, nao tem problema nenhum… não há método duplicado… mais alguém tenta? :smiley:

F

soh vai aparecer “metodo doStuff()”, o “COnstructor” n vai aparecer pq eh um metodo FooClass() (tem ateh o tipo de retorno: void)…

M

Felipe, quaaase cara! heheahaha, um dos problemas tu resolveu… mas a saida não será essa não… ehhehehe, tu não deixa de estar certo, o método FooClass() é um método qualquer… só tem o mesmo nome de um construtor, mas não é construtor… vamos lá gente, sem compilar… quem é o próximo? :smiley:

J

Posta a resposta ai… puts… Essa foi muito bem bolada mesmo. Bole mas iguais (complexidade) a esta. :joia:

M

hahahhaa, olha o avatar novo do JavaTeco… hahahhaha, então ok, vamos a resposta… seguinte, lembrem-se de q todo método de uma interface é implicitamente public abstract ok? agora… em FooClass eu tento implementar esse método doStuff() … certo? mas vejam como coloquei a assinatura do método em FooClass:

void doStuff() { ... }

…agora, ligando as coisas… se um método de interface é implicitamente public abstract… e eu estou implementando o método doStuff sem modificador de acesso, quer dizer q ele tem acesso padrão, correto? …agora, há um porém, não se pode mudar o acesso de um método pra ser mais restritivo do q o da superclasse ou interface q implementa!

… se o método na interface é public abstract doStuff(), ele não pode ter acesso padrão, nem protected, nem private! o public é o acesso menos restritivo de todos, e ao implementar ele com acesso padrão, estarei violando essa regra do compilador! :smiley: essa foi dificil de descobrir né? se cair uma dessas no exame ja é sacanagem… ehehheehaeha

J

“matheus”:
hahahhaa, olha o avatar novo do JavaTeco… hahahhaha, então ok, vamos a resposta… seguinte, lembrem-se de q todo método de uma interface é implicitamente public abstract ok? agora… em FooClass eu tento implementar esse método doStuff() … certo? mas vejam como coloquei a assinatura do método em FooClass:

void doStuff() { ... }

…agora, ligando as coisas… se um método de interface é implicitamente public abstract… e eu estou implementando o método doStuff sem modificador de acesso, quer dizer q ele tem acesso padrão, correto? …agora, há um porém, não se pode mudar o acesso de um método pra ser mais restritivo do q o da superclasse ou interface q implementa!

… se o método na interface é public abstract doStuff(), ele não pode ter acesso padrão, nem protected, nem private! o public é o acesso menos restritivo de todos, e ao implementar ele com acesso padrão, estarei violando essa regra do compilador! :smiley: essa foi dificil de descobrir né? se cair uma dessas no exame ja é sacanagem… ehehheehaeha

Puts… Não consegui ver isso… sei o conceito e não consegui ver… muito boa mesmo Matheus… poste +…

Criado 30 de maio de 2004
Ultima resposta 30 de mai. de 2004
Respostas 9
Participantes 5