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í:
Código
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:
Código
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?