Esto debido a que los atributos:
private int totalDeReproducciones = 0;
private int totalDeMeGusta = 0;
de la superclase Audio solo deben ser modificados por los métodos:
public void reproduce() {
this.totalDeReproducciones++;
}
public void meGusta() {
this.totalDeMeGusta++;
}
propios de la misma superclase.
Posdata. Tampoco deberia de existir el siguiente setter:
public void setClasificacion(int clasificacion) {
this.clasificacion = clasificacion;
}
de la misma superclase ya que la clasificación se obtendrá indirectamente dependiendo del total de me gusta y total de reproducciones. Si se deja el setter anterior un usuario con malas intenciones puede restablecerlo. Propongo igual que el siguiente getter:
public int getClasificacion() {
return clasificacion;
}
(igual de la misma superclase) tampoco debería existir y establecerlo mejor como un método y no como un getter:
public int getClasificacion() {
// return 0;
}
ya que se va a sobrescribir en las subclases Cancion y Podcast.