Acho q não dá certo pois ch é uma referência para um chevrolet, e qdo a gente faz
ch = new Carro();
não está sendo passada uma referencia para chevrolet, e sim para carro (e carro não é um chevrolet). Já o contrário imagino q seria verdadeiro, pois chevrolet é um carro:
c = new Chevrolet();
E então, qual é a resposta?
J
JavaTecoPJ
jujo, aproveitando seu post, vou por mais lenha a fogueira…
O que acontecerá… pq? Tem solução (se tiver)? Qual seria a solução (se tiver)?
C
carisioPJ
JavaTeco,
Acho q dá pau, pois ch espera uma referência para um objeto Chevrolet, e vc tá passando uma referência para um objeto Carro… Agora se vc fizer o cast acho q funciona:
Então, quais são as respostas?
J
JavaTecoPJ
“carisio”:
JavaTeco,
Acho q dá pau, pois ch espera uma referência para um objeto Chevrolet, e vc tá passando uma referência para um objeto Carro… Agora se vc fizer o cast acho q funciona:
Então, quais são as respostas?
As suas duas respostas estão corretas… :joia:
J
Juliano_CarnielPJ
AS Duas estão corretas sim, mas porque?!
Porque a classe Chevrolet extends Carro;
e isso pode, porém a o objeto cv apenas terá os métodos pertencentes a classe Carro, e os métodos da classe Chevrolet que estão implementados ela não terá acesso!
entao c e ch terão os memsmo métodos embora ch tenha sido declarado como um objeto de Chevrolet.
Até mais pessoal!
Se alguem mais tiver essas dúvidas e desafios interessantes por favor poste aqui, só iremos ganhar com isso!
=)
cya!
F
FelipePJ
esse codigo funciona? se sim, o q acontece? se nao, pq?
publicclassCarro{protectedintvelocidade;publicCarro(){System.out.println("Criando carro");velocidade=0;}protectedvoidacelera(intnum){velocidade+=num;System.out.println("Velocidade do carro: "+velocidade);}}publicclassChevroletextendsCarro{publicChevrolet(){System.out.println("Criando Chevrolet");}publicvoidacelera(){velocidade+=10;System.out.println("Velocidade do Chevrolet: "+velocidade);}}publicclassFuscaextendsCarro{publicCorsa(){System.out.println("Criando corsa");}publicvoidacelera(intnum){System.out.println("nao eh possivel acelerar o fusca em "+num);}}publicclassExecuta{publicstaticvoidmain(Stringargs[]){Carroc1,c2,c3;c1=newCarro();c2=newChevrolet();c3=newFusca();c1.acelera(20);c2.acelera(30);c2.acelera();c3.acelera(20);}}
amanha posto a resposta
J
Juliano_CarnielPJ
em primeira instancia
achei dois erros, mas ja posto o resto.
publicclassFuscaextendsCarro{publicCorsa(){System.out.println("Criando corsa");}publicvoidacelera(intnum){System.out.println("nao eh possivel acelerar o fusca em "+num);}}
faltou um retorno no método Corsa, o qual deveria ser Fusca e dai nao tem retorno mesmo =)
o resto vou analisar agora =) cya!
J
Juliano_CarnielPJ
Bom, outro erro que eu achei foi na invocaçao do método c2.acelera(); o qual precisa um parametro int declarado na classe Carro, pois o objeto criado é da classe Carro e não da classe Chevrolet;
=)
acho que é isso, Felipe corrige ai!
=)
cya!
F
FelipePJ
tipo, o erro do construtor da classe fusca foi erro de digitacao hauhauahuauahua e outra coisa q esqueci de avisar eh q eh pra considerar cada classe no seu respectivo arquivo…
qnto ao erro da invocacao do metodo acelera, vc acertou
mas ainda tem mais coisa…
J
Juliano_CarnielPJ
ahhhhh passei batido num ali, percebi agora…
a variável velocidade da classe Carro vai sendo incrementada, ou seja, se vc mandar imprimir mais uma vez, ex: c1.acelera(10);
ele nao vai imprimir o 10 mas sim imprimirá o valor do atributo velocidade qeu agora vale 30, dará uma mensagem:
Velocidade do carro: 30
e assim para cada classe!
mmmm, mais alguma coisa?!
bah adoro esses testes kra… hahaha
ou felipe, se tiver mais ai poste =)
falou! =)
F
FelipePJ
falto um errinho… a classe Fusca sobreescreve o metodo acelera(int num), mas o original da classe Carro era protected, e a classe Fusca ta sobreescrevendo como public, o q n eh permitido, qndo se sobreescreve um metodo deve se manter o mesmo acesso…
e vale lembrar q nao tem erro a classe Chevrolet sobreescrever o metodo acelera como public pois a versao dela eh sem parametros, dai n sobreescreve, sobrecarrega
J
Juliano_CarnielPJ
eeeeeeeeeeeeeeee
=)
legal =) adquiri mais conhecimento hoje!!!
agora vou partir para o desafio que o jeve postou, eu ja tinha visto esse, mas não lembro bem ao certo.