Pegadinha

É o método público (opção 5). Na interface, todos os métodos são implicitamente públicos. Logo para ele ser implementado pela classe C ele tem que ser público.

Quanto a questão de se o método está implementando da interface ou se está sobrescrendo da classe abstrata, na verdade está ocorrendo as duas coisas ao memo tempo. Ele está sobrescrevendo da classe abstrata E implementando da interface.

Perfeito.

Acho que você quis dizer o oposto. Ele não pode ser mais restritivo do que o método da superclasse.

[]s,
Sami

Resposta 5

É da interface pois há interface obriga que o o metodo implementado seja público, a classe abstrata permite que o método continue como default.

[quote=DaviPiala]Resposta 5

É da interface pois há interface obriga que o o metodo implementado seja público, a classe abstrata permite que o método continue como default.[/quote]

Essa sim para mim foi uma boa resposta. Porem será que ta correto mesmo?

rs
:wink:

então se houvesse um método void x() na Classe abstrata e o mesmo método na Interface quando sobrescrevermos esse método, ele sobrescreverá os 2 ?? Realmente tem muita lógica, afinal como os 2 são obrigatórios, se fosse realmente pra satisfazer um primeiro e outro depois, teríamos que ter 2 métodos iguais… o que é impossível de acontecer… é a explicação mais lógica até agora sem sombra de dúvidas, mas alguém tem algum material (na Web mesmo) que possa nos garantir isso pra não restar mais dúvidas ??

Falows :wink:

O melhor exemplo que achei trata-se de um caso de implementar duas interfaces com métodos com assinaturas iguais. É um caso diferente, mas ao meu ver completamente comparável.

http://java.sun.com/docs/books/jls/third_edition/html/classes.html#228059

[quote]
It is permitted for a single method declaration in a class to implement methods of more than one superinterface. For example, in the code:

interface Fish { int getNumberOfScales(); } interface Piano { int getNumberOfScales(); } class Tuna implements Fish, Piano { // You can tune a piano, but can you tuna fish? int getNumberOfScales() { return 91; } }
the method getNumberOfScales in class Tuna has a name, signature, and return type that matches the method declared in interface Fish and also matches the method declared in interface Piano; it is considered to implement both.[/quote]

Legal todo mundo esta afiadissimo!Acho interessante postar aqui esse tipo de assunto especialmente para aqueles que como eu estão preste a fazer a prova,assim podemos discutir,discutir, ate dominar o assunto.Entao sem compilar de cara o que mostrar abaixo??

tem essa pegadinha bacana tambem:assunto Serializacao
 import java.io.*;
class Dono implements Serializable{
  String nome;   
    Dono(String no){
       nome=no; 
    }
}
class Carro implements Serializable{
   String tipo;
    Dono d;
    Carro(String t,Dono x){
        d=x;
        tipo=t;
    }
    Dono getender(){
        return d;
    }
}
public class Main {
 public static void main(String[] args) throws IOException {
         Dono d=new Dono("fabio");
         Carro c=new Carro("Ferrari",d);
         Carro c2=null;
       ObjectOutputStream x=new ObjectOutputStream(new     FileOutputStream("se"));
       x.writeObject(c);
       ObjectInputStream x2=new ObjectInputStream(new FileInputStream("se"));
        try {
            c2=(Carro) x2.readObject();
        } catch (ClassNotFoundException ex) {
        }
       System.out.println(" tipo; "+c2.tipo+ " dono; "+d.nome);
       
       
    }

}

Na minha opnião vai dar erro de compilação ou será causado algum exceção em tempo de execução.

Primeiro vc serealiza em a instância de Carro c. O que será serealizado será Ferrari, e uma meta informação da classe, ou seja, o nome da classe d Dono. Depois vc disse que c2 receberá uma nova serealização e tenta ler nessa nova serealização.

Mas não tenho certeza quano se trata de Genéricos, serealização e Threads.
:roll:

[quote=anderson.bonavides]
:roll:[/quote]

Esta é uma questao só mesmo sobre serializacao e muita aencao estamos aqui serializando 2 objectos
olha com atencao a linha 32.

[quote=anderson.bonavides]Na minha opnião vai dar erro de compilação ou será causado algum exceção em tempo de execução.

Primeiro vc serealiza em a instância de Carro c. O que será serealizado será Ferrari, e uma meta informação da classe, ou seja, o nome da classe d Dono. Depois vc disse que c2 receberá uma nova serealização e tenta ler nessa nova serealização.

Mas não tenho certeza quano se trata de Genéricos, serealização e Threads.
:roll:[/quote]

Cara c2 recebe uma deserializacao e nao uma serializacao cuidado…

Quando se trata de Serealização ainda sou infantil

:wink:

Ferrari e Fabio.

Cara prestei atenção na questão e não vi nada estranho nela.

[quote=DaviPiala]Ferrari e Fabio.

Cara prestei atenção na questão e não vi nada estranho nela.

[/quote]

Justamente cara nao tinha nada de estranho era para saber logo o que imprime,so isso.

quem se arrisca? :slight_smile:

import java.util.*;

class Conver{
 //insira aqui
    
}
  


public class Main {
  Conver c=new Conver(){
     public void x(Integer ... x){
          System.out.println("Integer  ... x");
     }  
   };
  void y(){
   c.x(2,3);  
 }
        
 public static void main(String[] args) throws IOException {
  new Main().y();
}
}

Para imprimir qual metodo tenho que inserir na class Canver

  1. void x(Integer…x){ System.out.println(“Superclasse”);}
  2. static void x(Integer…x) { System.out.println(“Superclasse”);}
  3. static void x(int… x){ System.out.println(“Superclasse”);}
  4. protected final void x(Object … x){ System.out.println(“Superclasse”);}
  5. nenhuma delas
  6. qualquer uma delas

[quote=fabioEM]quem se arrisca? :slight_smile:

Para imprimir qual metodo tenho que inserir na class Canver

  1. void x(Integer…x){ System.out.println("Superclasse);}
  2. static void x(Integer…x) { System.out.println("Superclasse);}
  3. static void x(int… x){ System.out.println("Superclasse);}
  4. protected final void x(Object … x){ System.out.println("Superclasse);}
  5. nenhuma delas
  6. qualquer uma delas
    [/quote]

Tu copiou as saídas erradas. Pode levar em consideração que estão corretas?

[quote=anderson.bonavides][quote=fabioEM]quem se arrisca? :slight_smile:

Para imprimir qual metodo tenho que inserir na class Canver

  1. void x(Integer…x){ System.out.println("Superclasse);}
  2. static void x(Integer…x) { System.out.println("Superclasse);}
  3. static void x(int… x){ System.out.println("Superclasse);}
  4. protected final void x(Object … x){ System.out.println("Superclasse);}
  5. nenhuma delas
  6. qualquer uma delas
    [/quote]

Tu copiou as saídas erradas. Pode levar em consideração que estão corretas?[/quote]

isso mesmo so as que estao corretas,quais para ti?

Fabio presta atenção nos System.out.println("Superclasse); ta faltando o ". É isso que to perguntando.

para mim somente a numero 1…
so que eu não entendi muito bem o que você queria quem imprimisse
!!!

na verdade pode tanto ser a numero 1 ou a numero 5 é isso !!!

[quote=anderson.bonavides]Fabio presta atenção nos System.out.println("Superclasse); ta faltando o ". É isso que to perguntando.
[/quote]
cara com certeza desculpas agora coloquei “” que faltava