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
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
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
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 [/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 !!!
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 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