El otro día me dio por pensarlo y desde entonces no he logrado nada.
Todos sabemos que podemos hacer una llamada a un constructor y en la misma instanciación modificar uno o más métodos.
Algo así:
Nota a = new Nota()
{
@Override
{
return nota;
}
};
Creo que esto está permitido gracias a la herencia de Java, ya que la variable nota tiene que estar protegida y no ser privada para poder hacer uso de ella.
Resumiendo creo que con eso estamos haciendo un extends de Nota y guardandolo en una declaración Nota.
El dilema que me surge a mi es que pasa si en lugar de @Override yo añado un método nuevo que no pertenece a la clase nota
Es decir:
Nota a = new Nota()
{
public double notaSobre1()
{
return nota*0.10;
}
};
El compilador me deja hacerlo sin embargo Nota no sabe que ese método existe y por tanto nunca se podrá hacer uso de él.
Y mi pregunta es, si no puede ser llamado nunca ¿porque te deja crearlo?