Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

Meu Projeto não compila se eu referenciar

Desculpem se eu errei algum termo.

Eu fiz o código conforme a explicação do professor, e durante a aula parou de compilar. Ao concluir a aula, baixei o arquivo do professor, e esse também da o mesmo erro. Não sei arrumar. Nossos códigos estão iguais. Como é um erro de compilação, vou mostrar um print.

Meu projeto carregado no momento do print é o mesmo do link disponibilizado no final da aula 6 (https://github.com/alura-cursos/Curso-Java-parte-3-Entendendo-heran-a-e-interface/archive/capitulo6.zip)

Erro de compilaçãoComo eu realmente não sei o que esta acontecendo, e provavelmente esse erro vá me impedir de seguir com as aulas fazendo os testes, desde ja eu agradeço profundamente toda a ajuda que puderem dar. S2

10 respostas

Oi Katya, tudo bem?

Seu programa esta dando erro pq as propriedades que vc ta tentando chamar não foram definidas na classe Gerente. Ex: setNome, setCPf..

Você deve defini-las antes de chamar.

Mas essas classes deveriam ter sido herdadas da class Funcionario, gerente é filha de funcionário. =( Socorro

solução!

Katya

na linha 5 do TestaGerente.... onde esta escrito Autenticavel g1 = new Gerente(); substitua por Gerente g1 = new Gerente();

veja se compila.

A classe Gerente extende de Funcionário. Autenticavel é a interface que Gerente assina.

Entra ai a questão da referência acredito.

Se por exemplo você colocar "Funcionario g1 = new Gerente();" o setSenha e o autetica no TesteGerente vai parar de funcionar, porque Funcionário não assina Autenticavel.

Como Gerente assina o Autenticavel, vai funcionar se você colocar: "Gerente g1 = new Gerente();".

Lucas. Eu vi que compila assim (Gerente g1 = new Gerente();), mas dessa forma que eu mostrei foi o professor que compilou na aula. E como não deu certo eu achei que o erro era meu. Mas quem fez assim foi o professor. Esse arquivo que eu mostro na imagem é o que eu baixei do professor. E ficou com erro igual ao meu. É isso que me deixou confusa. Se tirar o "autentica" e colocar o gerente via funcionar, mas ai foge do que o professor tentou mostrar na aula, sobre interface.

Na aula ele faz Gerente g1 = new Gerente(); Funcionario g1 = new Gerente(); Autenticavel g1 = new Gerente();

e os tres compilam... no que eu fiz esse ultimo não funciona

Nossa... minha cabeça deu um nó

Veja o video da aula em que ele cria o Autenticavel, no TesteGerente ele escreveu:

Autenticavel referencia = new Cliente();

    Gerente g1 = new Gerente();

verifiquei aqui no arquivo da aula tbm está assim.

Autenticavel g1 = new Gerente(); não vai compilar pelos motivos que falei.

Recomendo rever o video da aula e tentar baixar o arquivo da aula novamente.

Lucas, obrigada por tentar ajudar, mas é como eu disse. Eu entendi muito bem a aula. Mas eu sinalizei que EU não consegui fazer o teste como o professor mostrou, pra mim não compilou. Viu? no print eu mostro exatamente do que eu to falando. O teste do professor deu certo. O meu não deu.

Mesmo assim, muito obrigada pela sua atenção.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi Katya, dê uma olhada na linha abaixo de onde esta a seta no seu print...

está lá o

Gerente g1 = new Gerente(); (linha 8)

é por isso que o dele compila.

falta isso na print da sua tela no inicio do post

o

Autenticavel gerente = new Gerente ();

ele colocou só como exemplo de referência.

Mas, Lucas, de novo, eu já entendi.

E continuo dizendo que a minha versão não se comporta como a do professor. Pq ele cria uma instancia com o autenticavel. É isso que eu to falando

Autenticavel gerente = new Gerente(); gerente.setNome("Marco");

não funciona como o

Gerente gerente = new Gerente(); g1.setNome("Marco")

Eu não estou entendendo pra que fazer isso. Um novo gerente tinha que poder acessar o nome. Eu realmente não entendi. Mas percebi que a falha é realmente no meu entendimento do conteúdo. Eu agradeço de verdade a sua atenção. Depois que eu vi que o botão de encerrar solucionado, vou fazer isso agora. Muito obrigada mesmo.