Java中的抽象方法声明可以包含throws子句吗?


没有方法体的方法称为抽象方法。它只包含方法签名和一个分号,以及在其之前的一个abstract关键字。

public abstract myMethod();

是的,你可以从抽象类中抛出异常。

示例

在下面的Java程序中,我们有两个类:一个名为MyClass的抽象类,它有一个抽象方法(display()),另一个类继承了该抽象类。

这里,display() 抽象方法抛出一个IOException。

示例

 在线演示

import java.io.IOException;
abstract class MyClass {
   public abstract void display() throws IOException;
}
public class AbstractClassExample extends MyClass{
   public void display() throws IOException {
      System.out.println("This is the subclass implementation of the display method");
   }
   public static void main(String args[]) {
      try {
         new AbstractClassExample().display();
      }
      catch (IOException e) {
         e.printStackTrace();
      }
   }
}

输出

This is the subclass implementation of the display method

在从子类覆盖抽象方法时,你需要遵循以下规则:

  • 如果超类中的抽象方法抛出某些异常,实现的方法可以抛出相同的异常。

  • 如果超类中的抽象方法抛出某些异常,实现的方法可以选择不抛出任何异常。

  • 如果超类中的抽象方法抛出某些异常,实现的方法可以抛出其子类型。

  • 如果超类中的抽象方法抛出某些异常,实现的方法不应该抛出其超类型。

更新于:2020年6月29日

2K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.