Opção 5. Porque para sobrescrever um método o modificador de acesso não pode ser mais restritivo, mas pode ser mais abrangente, logo pode ser public opção 5.
D
doug
Olá pessoal
A alternativa que responde a pergunta feita é a 5 (cinco)
Por definição da jpc o atributo ou método que não for especificado o acesso será considerado
público…
flwsss…
at+
F
fabioEM
isso ai!!alguem tem mais?
G
gugaa_df
Os métodos na interface são implicitamente public, por isso a resposta só pode ser a 5.
L
leandrokjava
só pode ser a 5.
A
anderson.bonavides
Resposta: 5. Mas só resta saber se ele ta implementando o método da interface ou da classe.
Na minha opnião ta implementando o metodo da classe abstrata que a primeira classe concreta que herdar da classe abstrata tem que implementar o método.
Alguêm mais discorda ou concorda?
F
fabioEM
anderson.bonavides:
Resposta: 5. Mas só resta saber se ele ta implementando o método da interface ou da classe.
Na minha opnião ta implementando o metodo da classe abstrata que a primeira classe concreta que herdar da classe abstrata tem que implementar o método.
Alguêm mais discorda ou concorda?
cara eu ja penso que é da inteface pois se vc colocar
como protected void x (){} nao aceita me parece que o modificador de acesso da inteface por ser publico implicitamente pesa mais.
Mas realmente nao aposterei mais que 10 reais,fiquei na dúvida…
A
anderson.bonavides
Ainda continuo achando que é da classe Abstract.
C
carlospia
anderson.bonavides:
Resposta: 5. Mas só resta saber se ele ta implementando o método da interface ou da classe.
Na minha opnião ta implementando o metodo da classe abstrata que a primeira classe concreta que herdar da classe abstrata tem que implementar o método.
Alguêm mais discorda ou concorda?
Vejo da seguinte forma
Quando na Classe C extendemos B e implementamos A, estamos dizendo que deve existir a declaração do método “x”, ou seja a declaração do método “x” na Classe C resolve o extends e o implements.
Certo :?:
A
anderson.bonavides
carlospia:
anderson.bonavides:
Resposta: 5. Mas só resta saber se ele ta implementando o método da interface ou da classe.
Na minha opnião ta implementando o metodo da classe abstrata que a primeira classe concreta que herdar da classe abstrata tem que implementar o método.
Alguêm mais discorda ou concorda?
Vejo da seguinte forma
Quando na Classe C extendemos B e implementamos A, estamos dizendo que deve existir a declaração do método “x”, ou seja a declaração do método “x” na Classe C resolve o extends e o implements.
Certo :?:
Certissimo. Mas a discurção levantada por mim não é essa. A discurção levantada por mim é saber se o método vem da interface ou da classe. Essa é a grande sacada. Mas não deixa dúvida que o problema está resolvido.
J
Javabuntu
thiago.filadelfo:
Olá pessoal
atributo ou método que não for especificado o acesso será considerado
público…
flwsss…
at+
Cara vc está precisando rever uns conceitos mais que básicos… me diz uma coisa: se minha classe tiver em outro pacote acessando um atributo PADRÃO (esté é o acesso quando não se especifica nada :!: ) ela vai conseguir :?: :?: :?:
anderson.bonavides :
Olá pessoal
Certissimo. Mas a discurção levantada por mim não é essa. A discurção levantada por mim é saber se o método vem da interface ou da classe. Essa é a grande sacada. Mas não deixa dúvida que o problema está resolvido.
flwsss…
at+
Cara minha opinião que é da classe abstrata, na ordem da declaração primeiro extends depois vem o implements…
mas se alguém puder esclarecer melhor a resposta certa desta dúvida…
L
LPJava
por causa da simples regra que quando o metodo é subscrito ele nao pode ser menos restritivo que o metodo da superclasse… e na o void x(); ele é public… implicitamente na interface.
flw!
M
mateusbrum
Creio eu que primeiro implement e depois extends!
Pois se tu tiver que implementar os métodos da classe abstrata, obrigatóriamente teria que ser DEFAULT e ai tu não iria implementar a interface pois não permitiria métodos mais restritos (método interface PUBLIC), ai com certeza NÃO COMPILARIA!
O correto realmente seria a opção 5, o método satisfaria o acesso de ambos !
A
anderson.bonavides
LPJava:
5) por causa da simples regra que quando o metodo é subscrito ele nao pode ser menos restritivo que o metodo da superclasse… e na o void x(); ele é public… implicitamente na interface.
flw!
Já pensou pelo sentido de que a primeira classe concreta que herda de uma classe abstrata deve implementar seu método abstrato?
M
mateusbrum
Já pensou pelo sentido de que a primeira classe concreta que implementa uma interface deve implementar seu método abstrato?
Agora temos que consultar na específicação e ver quem tem prioridade, se a mesma existe.
Mas no caso relatado acima, com certeza a opção 5 é a única indicada, pois seria a satisfatória!
A
adriano_si
Essa realmente está fods de chegar num veredicto… Vejamos bem… você colocar o método public responde a questão… mas alguém tentou colocá-lo mais restritivo ?? o Compilador vai fazer a verificação do prioritário primeiro… o erro vai acusar se quem tem mais prioridade é a Abstract class ou a Interface… Não sei se vai colar, mas na teoria é pra dar certo…
Falows 8)
M
mateusbrum
O compilador diz que são tipos imcompatíveis.
V
victorwss
É 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.
S
Sami_Koivu
Perfeito.
Acho que você quis dizer o oposto. Ele não pode ser mais restritivo do que o método da superclasse.
[]s,
Sami
D
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.
A
anderson.bonavides
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.
Essa sim para mim foi uma boa resposta. Porem será que ta correto mesmo?
rs
A
adriano_si
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
S
Sami_Koivu
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.
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.
F
fabioEM
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??
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:
F
fabioEM
anderson.bonavides:
:roll:
Esta é uma questao só mesmo sobre serializacao e muita aencao estamos aqui serializando 2 objectos
olha com atencao a linha 32.
F
fabioEM
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:
Cara c2 recebe uma deserializacao e nao uma serializacao cuidado…
A
anderson.bonavides
Quando se trata de Serealização ainda sou infantil
D
DaviPiala
Ferrari e Fabio.
Cara prestei atenção na questão e não vi nada estranho nela.
F
fabioEM
DaviPiala:
Ferrari e Fabio.
Cara prestei atenção na questão e não vi nada estranho nela.
Justamente cara nao tinha nada de estranho era para saber logo o que imprime,so isso.
protected final void x(Object … x){ System.out.println("Superclasse);}
nenhuma delas
qualquer uma delas
Tu copiou as saídas erradas. Pode levar em consideração que estão corretas?
isso mesmo so as que estao corretas,quais para ti?
A
anderson.bonavides
Fabio presta atenção nos System.out.println("Superclasse); ta faltando o ". É isso que to perguntando.
R
Raff
para mim somente a numero 1…
so que eu não entendi muito bem o que você queria quem imprimisse
!!!
R
Raff
na verdade pode tanto ser a numero 1 ou a numero 5 é isso !!!
F
fabioEM
anderson.bonavides:
Fabio presta atenção nos System.out.println("Superclasse); ta faltando o ". É isso que to perguntando.
cara com certeza desculpas agora coloquei “” que faltava
R
Raff
iai e a resposta fabioEM ???
F
fabioEM
Raff:
para mim somente a numero 1…
so que eu não entendi muito bem o que você queria quem imprimisse
!!!
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:
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
R
Raff
não entendi por que a 1) está errada !!! ela está certa no meu ponto de vista
A
anderson.bonavides
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
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?
R
Raff
cara para mim a 1,3,4 estão certas!
A
anderson.bonavides
Raff de fato a opção 1 está errada. Compilei e o resultado foi realmente 3 e 4.
F
fabioEM
:oops:
anderson.bonavides:
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
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?
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!
A
antraceno
fabioEM:
ola galera sem testar alguem sabe essa resposta bem di cara
para nao dar erro de compilacao qual melhor opcao,quyal metodo deve ser implementado??
acho que é a opção 5
R
Raff
Caro amigo de um olhada nesse codigo e repare na regra da subcrição.....
publicclassTeste1{voidgo(Integer...a){System.out.println("Ola ");}//outra classpublicclassTeste2extendsTeste1{publicvoidgo(Integer...a){System.out.println("Iai cara");// quer dizer que isso não é uma subrscrição válida ?}}}
F
fabioEM
Raff:
Caro amigo de um olhada nesse codigo e repare na regra da subcrição.....
publicclassTeste1{voidgo(Integer...a){System.out.println("Ola ");}//outra classpublicclassTeste2extendsTeste1{publicvoidgo(Integer...a){System.out.println("Iai cara");// quer dizer que isso não é uma subrscrição válida ?}}}
Para quem é essa mensagem?não entendi?
F
fabioEM
antraceno:
acho que é a opção 5
isso cara!
R
Raff
fabioEM:
Raff:
Caro amigo de um olhada nesse codigo e repare na regra da subcrição.....
publicclassTeste1{voidgo(Integer...a){System.out.println("Ola ");}//outra classpublicclassTeste2extendsTeste1{publicvoidgo(Integer...a){System.out.println("Iai cara");// quer dizer que isso não é uma subrscrição válida ?}}}
Para quem é essa mensagem?não entendi?
era para você fabião !!!!!!! :)
A
anderson.bonavides
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.
classConver{protectedfinalvoidx(int...o){//tenta mudar para String vai dar erroSystem.out.println("Object ... x");}}classConver2extendsA{publicvoidx(Double...x){System.out.println("Integer ... x");}}publicclassMain{Convera=newConver2(){//OBSERVACAO};voidy(){a.x(2,3);}publicstaticvoidmain(String[]args){newMain().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
M
mmartinsrj
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:
essa é simpatica que quer tentar ?sem compilar ,de cara qual a resposta?
importjava.util.*;publicclassMain{staticvoidadd(Listu){System.out.println("com mais prioridade e \' "+u.peek());}publicstaticvoidmain(String[]args){Queuey=newLinkedList();y.offer(2);y.offer(12);y.offer(18);add(y);}}
1)nao compila
2)18
3)2
4)nao compila pela construcão do objeto polimorfica
5)o metodo offer nao existe
6)jogo a toalha
F
fabioEM
sei que é final de semana galera !vamos la!quem se arrisca?
M
Mauricio_Linhares
Não compila, a interface Queue não implementa a interface List.
enumPegadinha{A,B,C{},D{Stringx(intx){super.x(3);return" int ";}};Stringx(intx){out.println("Ah int");return"AH!!!!pegadinha do malandro!!";}Stringx(Integerx){out.println("Ah Integer");return"AH!!!!pegadinha do malandro!!";}}publicclassT{publicstaticvoidmain(String[]args){out.println(Pegadinha.D.x(9));}}
1)erro de compilacao
2)AH!!!pegadinha do malandro!!;
3)Ah int
4)Ah Integer
int
5)Ah int
int
}publicclassT{publicstaticvoidmain(String[]args){
out.println(Pegadinha.D.x(9));
}
}
M
Mauricio_Linhares
1, errod e compilação, não tem static import pra out.
F
fabioEM
Perfeito!!e se tivesse??qual seria o resultado fera?