Pour comprendre cela, considérons un exemple où nous avons une classe Mammalqui définit une readAndGetméthode qui lit un fichier, effectue une opération dessus et retourne une instance de classe Mammal.
class Mammal {
public Mammal readAndGet() throws IOException {//read file and return Mammal`s object}
}
La classe Humanétend la classe Mammalet remplace la readAndGetméthode pour renvoyer l'instance de Humanau lieu de l'instance de Mammal.
class Human extends Mammal {
@Override
public Human readAndGet() throws FileNotFoundException {//read file and return Human object}
}
Pour appeler, readAndGetnous devrons gérer IOExceptionparce que c'est une exception vérifiée et que le mammifère le readAndMethodlance.
Mammal mammal = new Human();
try {
Mammal obj = mammal.readAndGet();
} catch (IOException ex) {..}
Et nous savons que pour le compilateur mammal.readAndGet()est appelé à partir de l'objet de la classe, Mammalmais au moment de l'exécution, la JVM résoudra l' mammal.readAndGet()appel de méthode en un appel de la classe Humancar elle mammaltient new Human().
La méthode readAndMethodfrom Mammalest lancée IOExceptionet parce que c'est un compilateur d'exceptions vérifié, nous forcera à l'attraper chaque fois que nous appelonsreadAndGet lemammal
Supposons maintenant que readAndGetin Humanlève une autre exception vérifiée, par exemple Exception et nous savons qu'il readAndGetsera appelé à partir de l'instance de Humanparce que mammaltientnew Human() .
Parce que pour le compilateur, la méthode est appelée à partir de Mammal, donc le compilateur nous forcera à gérer uniquement, IOExceptionmais au moment de l'exécution, nous savons que la méthode lanceraException exception qui ne sera pas gérée et notre code sera interrompu si la méthode lève l'exception.
C'est pourquoi il est empêché au niveau du compilateur lui-même et nous ne sommes pas autorisés à lever une exception vérifiée nouvelle ou plus large car elle ne sera pas gérée par JVM à la fin.
Il existe également d'autres règles que nous devons suivre lors du remplacement des méthodes et vous pouvez en savoir plus sur Pourquoi nous devrions suivre les règles de remplacement de méthode pour en connaître les raisons.