Maison > Java > javaDidacticiel > le corps du texte

La hiérarchie parent-enfant est-elle importante pour lever des exceptions lors d'une substitution en Java ?

WBOY
Libérer: 2023-08-19 13:49:23
avant
1254 Les gens l'ont consulté

La hiérarchie parent-enfant est-elle importante pour lever des exceptions lors dune substitution en Java ?

Lorsque vous essayez de gérer une exception (cochée) levée par une méthode spécifique, vous devez l'intercepter en utilisant la classe Exception ou la superclasse où l'exception s'est produite.

De même, lors du remplacement d'une méthode d'une super classe, si elle lève une exception -

  • La méthode de la sous-classe doit lever la même exception ou son sous-type.

  • Les méthodes des sous-classes ne doivent pas sortir de leur supertype.

  • Vous pouvez remplacer sans lever aucune exception.

Lorsque vous avez trois classes (hiérarchie) nommées Demo, SuperTest et Super héritage, si Demo et SuperTest ont une méthode nommée sample().

Exemple

Démonstration en direct

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");
      }
   }
}
Copier après la connexion

Output

sample() method of the SuperTest class
Copier après la connexion

Si la classe dans laquelle vous interceptez l'exception n'est pas la même que l'exception levée ou n'est pas la superclasse de l'exception, vous obtiendrez une erreur de compilation.

De même, lors du remplacement d'une méthode, l'exception levée doit être la même que celle lancée par la méthode remplacée ou sa superclasse, sinon une erreur de compilation se produira.

Exemple

Démonstration

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");
      }
   }
}
Copier après la connexion

Sortie

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
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!