Heim  >  Artikel  >  Java  >  Ist die Eltern-Kind-Hierarchie wichtig für das Auslösen von Ausnahmen beim Überschreiben in Java?

Ist die Eltern-Kind-Hierarchie wichtig für das Auslösen von Ausnahmen beim Überschreiben in Java?

WBOY
WBOYnach vorne
2023-08-19 13:49:231232Durchsuche

Ist die Eltern-Kind-Hierarchie wichtig für das Auslösen von Ausnahmen beim Überschreiben in Java?

Wenn Sie versuchen, eine (überprüfte) Ausnahme zu behandeln, die von einer bestimmten Methode ausgelöst wird, müssen Sie sie mit der Klasse Exception oder der Superklasse, in der die Ausnahme aufgetreten ist, abfangen.

Ähnlich gilt, dass beim Überschreiben einer Methode einer Superklasse eine Ausnahme ausgelöst wird: −

  • Die Methode in der Unterklasse sollte dieselbe Ausnahme oder ihren Untertyp auslösen.

  • Methoden in Unterklassen sollten ihren Supertyp nicht verlassen.

  • Sie können überschreiben, ohne eine Ausnahme auszulösen.

Wenn Sie drei Klassen (Hierarchie) mit den Namen Demo, SuperTest und Super haben, die erben, wenn Demo und SuperTest eine Methode namens sample() haben.

Beispiel

Live-Demonstration

class Demo {
   public void sample() throws ArrayIndexOutOfBoundsException {
      System.out.println("sample() method of the Demo class");
   }
}
class SuperTest extends Demo {
   public void sample() throws IndexOutOfBoundsException {
      System.out.println("sample() method of the SuperTest class");
   }
}
public class Test extends SuperTest {
   public static void main(String args[]) {
      Demo obj = new SuperTest();
      try {
         obj.sample();
      }catch (ArrayIndexOutOfBoundsException ex) {
         System.out.println("Exception");
      }
   }
}

Ausgabe

sample() method of the SuperTest class

Wenn die Klasse, in der Sie die Ausnahme abfangen, nicht mit der ausgelösten Ausnahme übereinstimmt oder nicht die Superklasse der Ausnahme ist, erhalten Sie einen Fehler bei der Kompilierung.

Ebenso sollte beim Überschreiben einer Methode die ausgelöste Ausnahme dieselbe sein wie die Ausnahme, die von der überschriebenen Methode oder ihrer Oberklasse ausgelöst wird, da andernfalls ein Fehler bei der Kompilierung auftritt.

Beispiel

Demonstration

import java.io.IOException;
import java.io.EOFException;
class Demo {
   public void sample() throws IOException {
      System.out.println("sample() method of the Demo class");
   }
}
class SuperTest extends Demo {
   public void sample() throws EOFException {
      System.out.println("sample() method of the SuperTest class");
   }
}
public class Test extends SuperTest {
   public static void main(String args[]) {
      Demo obj = new SuperTest();
      try {
         obj.sample();
      }catch (EOFException ex){
         System.out.println("Exception");
      }
   }
}

Ausgabe

Test.java:12: error: sample() in SuperTest cannot override sample() in Demo
public void sample() throws IOException {
            ^
overridden method does not throw IOException
1 error

D:\>javac Test.java
Test.java:20: error: unreported exception IOException; must be caught or declared to be thrown
   obj.sample();
              ^
1 error

Das obige ist der detaillierte Inhalt vonIst die Eltern-Kind-Hierarchie wichtig für das Auslösen von Ausnahmen beim Überschreiben in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen