1
resposta

[Dúvida] Erro na hora de fzaer outro Override

Bom dia pessoal!

Quando estava rodando o projeto do screenMatch percebi que o metodo "exibir ficha tecnica" não funciona corretamente na classe serie que herda da classe titulo . Quando chamamos o metodo e rodamos o programa ele exibe o campo: "Duração em minutos", porém a serie precisa de um calculo diferente para saber sua duração correto? Ao tentar fazer um override a IDE informa que não é possivel pois as porpriedades utilizadas no metodo são privadas e a classe filha não possui acesso a elas. Como posso fazer fzaer para exibir a duração em minutos de forma correta na classe serie? teria que utilizar os metodos get para exibir os valores? !!

1 resposta

Olá, Kaio!

Entendo sua dúvida e você está no caminho certo. Realmente, quando uma classe herda de outra, ela não tem acesso direto aos atributos privados da classe mãe, mas podemos utilizar os métodos 'get' e 'set' para acessar e modificar esses valores, respectivamente.

No caso do seu problema, você está tentando sobrescrever o método "exibir ficha técnica" na classe Serie, que herda da classe Titulo. Para isso, você precisa criar na classe Serie um método com a mesma assinatura do método que deseja sobrescrever na classe Titulo.

Por exemplo, se o método na classe Titulo é:

public void exibirFichaTecnica() {
    // código do método
}

Você deve criar na classe Serie um método com a mesma assinatura:

@Override
public void exibirFichaTecnica() {
    // código do método
}

Note que utilizamos a anotação @Override para indicar que estamos sobrescrevendo um método da classe mãe.

Agora, dentro do método sobrescrito, você pode fazer o cálculo da duração da série da maneira que achar mais adequada, e exibir essa informação.

Lembre-se que para acessar os atributos privados da classe mãe, você deve utilizar os métodos 'get' e 'set'. Por exemplo, se na classe Titulo você tem um atributo privado duracaoEmMinutos, você deve ter um método 'get' correspondente:

public int getDuracaoEmMinutos() {
    return this.duracaoEmMinutos;
}

E na classe Serie, você pode acessar esse valor através desse método 'get':

@Override
public void exibirFichaTecnica() {
    int duracao = getDuracaoEmMinutos();
    // código do método
}

Espero ter ajudado e bons estudos!