Um dies zu verstehen, betrachten wir ein Beispiel, in dem wir eine Klasse haben, die eine Methode Mammaldefiniert readAndGet, die eine Datei liest, eine Operation daran ausführt und eine Instanz der Klasse zurückgibt Mammal.
class Mammal {
public Mammal readAndGet() throws IOException {//read file and return Mammal`s object}
}
Class Humanerweitert class Mammalund überschreibt die readAndGetMethode, um die Instanz von Humananstelle der Instanz von zurückzugeben Mammal.
class Human extends Mammal {
@Override
public Human readAndGet() throws FileNotFoundException {//read file and return Human object}
}
Um anzurufen, müssen readAndGetwir behandeln, IOExceptionweil es eine überprüfte Ausnahme ist und Säugetiere readAndMethodes werfen.
Mammal mammal = new Human();
try {
Mammal obj = mammal.readAndGet();
} catch (IOException ex) {..}
Und wir wissen, dass der Compiler mammal.readAndGet()vom Objekt der Klasse aufgerufen wird, Mammalaber zur Laufzeit löst JVM den mammal.readAndGet()Methodenaufruf in einen Aufruf der Klasse auf, Humanweil er mammalhält new Human().
Verfahren readAndMethodvon Mammalwirft , IOExceptionund weil es eine geprüfte Ausnahme Compiler ist uns , es zu fangen zwingen , wenn wir rufen readAndGetaufmammal
Angenommen, readAndGetin Humanlöst eine andere aktivierte Ausnahme aus, z. B. Exception, und wir wissen readAndGet, dass sie von der Instanz aufgerufen wird, Humanweil weil mammalhält new Human().
Da für den Compiler die Methode aufgerufen Mammalwird, zwingt uns der Compiler, nur zu behandeln, IOExceptionaber zur Laufzeit wissen wir, dass die Methode eine ExceptionAusnahme auslöst, die nicht behandelt wird, und unser Code wird unterbrochen, wenn die Methode die Ausnahme auslöst.
Aus diesem Grund wird dies auf Compilerebene selbst verhindert, und wir dürfen keine neuen oder umfassenderen geprüften Ausnahmen auslösen, da dies am Ende nicht von JVM behandelt wird.
Es gibt auch andere Regeln, die wir beim Überschreiben der Methoden befolgen müssen, und Sie können mehr darüber lesen, warum wir Regeln zum Überschreiben von Methoden befolgen sollten , um die Gründe zu kennen.