Questão de exame: Interfaces

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();

}

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

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???

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…

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:

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

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:

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

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

[quote=“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[/quote]

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