Olá Deivid! Tudo bem?
Primeiramente, é importante lembrar que um construtor em Java é usado para inicializar objetos da classe com um estado inicial definido. Os construtores não são destinados para incluir métodos como setDuracaoEmMinutos
ou avalia
, mas sim para inicializar atributos do objeto.
No seu caso, parece que você deseja adicionar funcionalidades específicas (setDuracaoEmMinutos
e avalia
) que não são atributos diretos da classe Filme
. Se essas funcionalidades são parte integral de Filme
, você deveria considerar incluí-los como atributos e inicializá-los através do construtor.
Por exemplo, se você quer que Filme
tenha uma duração e uma avaliação, você poderia fazer algo assim:
public class Filme {
private int duracaoEmMinutos;
private double avaliacao;
// Construtor de Filme
public Filme(int duracaoEmMinutos, double avaliacao) {
this.duracaoEmMinutos = duracaoEmMinutos;
this.avaliacao = avaliacao;
}
// Getters e Setters
public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
public void setDuracaoEmMinutos(int duracaoEmMinutos) {
this.duracaoEmMinutos = duracaoEmMinutos;
}
public double getAvaliacao() {
return avaliacao;
}
public void setAvaliacao(double avaliacao) {
this.avaliacao = avaliacao;
}
}
Se setDuracaoEmMinutos
e avalia
são métodos que pertencem a outras classes e você quer que Filme
herde essas funcionalidades, você deve fazer Filme
estender essas classes. No entanto, Java não suporta herança múltipla diretamente (uma classe só pode estender uma outra classe), mas você pode usar interfaces ou composição para alcançar funcionalidades semelhantes.
Por exemplo, se setDuracaoEmMinutos
está em uma classe Media
e avalia
em outra classe Avaliavel
, você poderia fazer Filme
estender Media
e implementar uma interface Avaliavel
.
public interface Avaliavel {
void avalia(double avaliacao);
}
public class Media {
protected int duracaoEmMinutos;
public void setDuracaoEmMinutos(int duracao) {
this.duracaoEmMinutos = duracao;
}
}
public class Filme extends Media implements Avaliavel {
private double avaliacao;
@Override
public void avalia(double avaliacao) {
this.avaliacao = avaliacao;
}
}
Lembre-se de que os construtores são principalmente para inicialização de atributos, e a herança/interface deve ser usada para compartilhar funcionalidades entre classes.
Espero que isso ajude a esclarecer como você pode organizar os construtores e a herança em seu projeto.
Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.