Pegadinha

iai e a resposta fabioEM ???

[quote=Raff]para mim somente a numero 1…
so que eu não entendi muito bem o que você queria quem imprimisse
!!![/quote]
Pior que a 1 nao pode pq vc nao vai conseguir chamar um metodo sobrecarregado para o proposito da questão.Se colocar 1) void x(Integer…x){ System.out.println("Superclasse);} no código
vai acontecr o seguinte:

Terás a sobrescricao do metodo portanto o compilador vai chamar o metodo da subclasse em questão
Conver c=new Conver(){
};
a 5 tambem nao esta certa

[quote=Raff]iai e a resposta fabioEM ???
[/quote]
cara só a 3) e a 4) mesmo
o importante nesse código é lembrar as regras de sobrescricao e de sobrecarga lembra a sobrecarga faz com que a variavel de referencia chame o metodo ja a sobrescricao faz com que o objeto chame o metodo :lol:
valeu se alguem tivei mais :smiley:

não entendi por que a 1) está errada !!! ela está certa no meu ponto de vista

[quote=fabioEM]
cara só a 3) e a 4) mesmo
o importante nesse código é lembrar as regras de sobrescricao e de sobrecarga lembra a sobrecarga faz com que a variavel de referencia chame o metodo ja a sobrescricao faz com que o objeto chame o metodo :lol:
valeu se alguem tivei mais :D[/quote]

fabioEM não entendi bulhufas da sua explicação. O meu chutometro ia acertar em cheio a de número 3. Essa qustão envolve classes internas anônimas então da uma força ai e da uma explicação melhor se possivel?

cara para mim a 1,3,4 estão certas!

Raff de fato a opção 1 está errada. Compilei e o resultado foi realmente 3 e 4.

:oops:[quote=anderson.bonavides][quote=fabioEM]
cara só a 3) e a 4) mesmo
o importante nesse código é lembrar as regras de sobrescricao e de sobrecarga lembra a sobrecarga faz com que a variavel de referencia chame o metodo ja a sobrescricao faz com que o objeto chame o metodo :lol:
valeu se alguem tivei mais :D[/quote]

fabioEM não entendi bulhufas da sua explicação. O meu chutometro ia acertar em cheio a de número 3. Essa qustão envolve classes internas anônimas então da uma força ai e da uma explicação melhor se possivel?[/quote]

ok cara é o seguinte:

Qd vc cria uma classe anonima
to tipo

  Conver c=new Conver(){   
     public void x(Integer ... x){   
          System.out.println("Integer  ... x");   
     } 

È como se vc criasse uma sub classe chamada justamente de subclasse “anonima”

por exemplo o codigo equivalente seria:

class A{   

    protected final void x(int...o){
          System.out.println("Objewcti  ... x");   
        
    }
       
} 
class B extends A{
     public void x(Integer ... x){   
          System.out.println("Integer  ... x");   
     } 
    
}
  public class Main {   
  
  void y(){ 
     A a=new B(); 
   a.x(2,3);     
}   
           
public static void main(String[] args)  {   
  new Main().y();   
}   
} 

como vc pode ver temos um exemplo de sobrecarga
fazendo A a=new B();
a.x(2,3); estou chamando o metodo da classe A pois trata-se de sobrecarga,na verdade esta pegadinha testa 2 coisas:
classe anonima e sobrecarga
se ainda nao fui claro pode falar,realmente para explicacoes sou pessimo!

[quote=fabioEM]ola galera sem testar alguem sabe essa resposta bem di cara :smiley:

interface A{ void x();}
 abstract class B{
  abstract void x();
}
class C extends B implements A{
   
   //insira aqui codigo aqui 
       
    
 
} 

1)final void x(){}
2)int void x(){}
3)private void x(){}
4)protected void x(){}
5)public void x(){}

para nao dar erro de compilacao qual melhor opcao,quyal metodo deve ser implementado??[/quote]

acho que é a opção 5 :slight_smile:

Caro amigo de um olhada nesse codigo e repare na regra da subcrição…

[code]public class Teste1{

void go (Integer… a){

System.out.println("Ola ");
}

//outra class
public class Teste2 extends Teste1{

public void go(Integer… a){

System.out.println(“Iai cara”);// quer dizer que isso não é uma subrscrição válida ?
}

}

}[/code]

[quote=Raff]Caro amigo de um olhada nesse codigo e repare na regra da subcrição…

[code]public class Teste1{

void go (Integer… a){

System.out.println("Ola ");
}

//outra class
public class Teste2 extends Teste1{

public void go(Integer… a){

System.out.println(“Iai cara”);// quer dizer que isso não é uma subrscrição válida ?
}

}

}[/code]
[/quote]

Para quem é essa mensagem?não entendi?

[quote=antraceno]

acho que é a opção 5 :slight_smile: [/quote]
isso cara!

[quote=fabioEM][quote=Raff]Caro amigo de um olhada nesse codigo e repare na regra da subcrição…

[code]public class Teste1{

void go (Integer… a){

System.out.println("Ola ");
}

//outra class
public class Teste2 extends Teste1{

public void go(Integer… a){

System.out.println(“Iai cara”);// quer dizer que isso não é uma subrscrição válida ?
}

}

}[/code]
[/quote]

Para quem é essa mensagem?não entendi?[/quote]

era para você fabião !!! :slight_smile:

Raff ele não quiz dizer qual era a opção que compilava ele quiz dizer qual era a opção que imprimia superclasse. A opção 1 compila mas não imprime superclasse e sim Integer … x.

Fabio pq Object que é a opção 4 foi chamado primeiro que Integer até onde eu sabia e pensava q estava correto é que Object vinha depois de Integer e depois de Number.

agora eu entendi valew anderson !

ok Number vem antes de Object em termo de preferencia ,mas aqui trata-se de chamada por referencia
Conver c=new Conver2(){
};
è como no exemplo que te fiz
"c" é uma variavel de referencia para superclasse como para subclasse
lembra do exemplo que te fiz

class Conver{     
  
    protected final void x(int...o){   //tenta mudar para String vai dar erro
          System.out.println("Object ... x");     
           
    }   
         
}   
class Conver2 extends A{   
     public void x(Double ... x){     
          System.out.println("Integer  ... x");     
     }   
       
}   
  public class Main {    
     Conver a=new Conver2(){ //OBSERVACAO
         
     };
   void y(){   
 
   a.x(2,3);       
  }     
             
public static void main(String[] args)  {     
  new Main().y();     
}     
} 

OBSEVACAO: chamada é por referencia vai chamar o metodo que esta em Conver ou seja na superclasse!!tenta mudar o paramentro do metodo da super classe para String vai dar erro!
espero ter te ajudado na compressao

Resposta: 5 pois os métodos de Interface são implicitamente public

Agora… Qual foi sobrescrito?? Eu acho que foi o da classe abstract. :shock:
Imagino a seguinte ordem:

1- A classe abstract implementou o método da interface como abstract;
2- A classe concreta deve implementar todos os métodos abstract da classe abstract;
3- Dessa forma, implementou o método da classe abstract;
4- Mas opa, a classe tb estende uma interface :shock:
5- Não tem problema, o compilador viu que o método abstract que vc implementou, atende as exigências também da interface :smiley: assim voce não precisa “reimplementar” (ou seja, ganhou a classe abstract)

Essa é minha opinião
Abraço!

Essa é de um meu amigo,bem facinha quem tenta?nao vale compilar:

class A{
    int x=0;
    A(){
      this.x();  
    }
    void x(){
        System.out.println("x");
    }
    
}
  
public class Main {
    
    public static void main(String[] args) {
     new A().x();
    }
    
}

1)nao compila
2)imprime x
3)imprime x x
4) imprime x x x

imprimi X isso ?

Nao cara X e depois X novamente eh eh :-o