当前位置: 首页 > 编程笔记 >

如果父类中的方法“抛出异常”,我们可以在Java中的重写方法中将其删除吗?

傅明知
2023-03-14
本文向大家介绍如果父类中的方法“抛出异常”,我们可以在Java中的重写方法中将其删除吗?,包括了如果父类中的方法“抛出异常”,我们可以在Java中的重写方法中将其删除吗?的使用技巧和注意事项,需要的朋友参考一下

当超类方法在覆盖它时引发异常时,您需要遵循某些规则。

  • 子类方法应该抛出Same异常,或者子类型-

  • 它不应该抛出超级类型的异常-

  • 您可以将方法保留在子类中而不会引发任何异常

根据第三条规则,如果超类方法引发某些异常,则可以覆盖它而不会引发任何异常。

示例

在下面的示例中,超类的sampleMethod()方法引发FileNotFoundException异常,而sampleMethod()方法根本不引发任何异常。该程序仍然可以编译并执行,没有任何错误。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
abstract class Super{
   public void sampleMethod()throws FileNotFoundException{
      System.out.println("Method of superclass");
   }
}
public class ExceptionsExample extends Super{
   public void sampleMethod() {
      System.out.println("Method of Subclass");
   }
   public static void main(String args[]) {
      ExceptionsExample obj = new ExceptionsExample();
      obj.sampleMethod();
   }
}

输出结果

Method of Subclass
 类似资料:
  • 问题内容: 我们可以重载Java中的方法吗? 问题答案: 您 可以 重载该方法,但仅在JVM启动您的类时使用。例如: 从命令行运行时,即使指定一个或两个命令行参数,该命令也 始终会 打印。 当然,您可以从代码中自己调用该方法-此时将应用常规的重载规则。 编辑:请注意,您可以使用varargs签名,因为从JVM的角度来看,这是等效的:

  • 问题内容: 我遇到了必须重写Object的toString()方法的问题,但是原始方法没有引发任何异常。但是,我正在使用一些需要抛出异常的通用代码。 这是FavoriteList.java的一部分。这些异常必须抛出。如果有某种方法可以抑制这些异常或将它们捕获到方法中,那将很有帮助。 最后,我的方法标题必须如下所示: 我不在乎方法的结尾内容。只要编译就可以了。我只需要修复标题,但是找不到解决方法。提

  • 问题内容: 我在扩展基类并覆盖基类中的方法。但是当我称它为超类版本时。如何覆盖该方法? 我希望它打印“这是:孩子”,但它打印“这是:超级” 问题答案: 我找到了答案(从这里改编:https : //gist.github.com/Zodiase/af44115098b20d69c531)-基类也需要以ES6方式定义:

  • 我想知道: 为什么在Java中不能重写静态方法? 静态方法可以在Java中重载吗?

  • 假设我有一个类和一个方法 现在,我想为由流传递的的每个实例调用foo,如下所示: 问题:如何正确处理异常?代码在我的机器上没有编译,因为我没有处理foo()可能引发的异常。的在这里似乎没有用。这是为什么?

  • Java代码: 我的问题是:类中的是否重载了超类中同名的? 我的朋友说他们不是因为他们不在一个班。