【问题标题】:I'm learning to write implementation classes separately for an interface in a package, but keep getting errors?我正在学习为包中的接口单独编写实现类,但总是出错?
【发布时间】:2020-05-08 21:44:46
【问题描述】:

这是我的界面:

  public interface prog56pack2interface
  {
     double add (int v1, int v2);

     double subtract (int v1, int v2);

     double product (int v1, int v2);

     double divide (int v1, int v2);

     String showme ();
  }

这是我的实现类的代码:

public class prog56pack2implclasses1 implements prog56pack2interface
{
    public double add (int v1, int v2)
    {
        return v1 + v2;
    }

    public double subtract (int v1, int v2)
    {
        if (v1 > v2)
        {
            return v1 - v2;
        }
        else
        {
            return v2 - v1;
        }
    }
}

我在这里有两个主要疑问:

1)为什么我按原样编译上面的代码时会出现这个错误

prog56pack2implclasses1 不是抽象的,不会覆盖公共类 prog56pack2implclasses1 实现 prog56pack2interface

2) 当我包含提示用户进行 I/O 操作的“divide()”方法时,我收到一个错误:(我在方法附近包含了 throws IOException)

prog56pack2implclasses1 中的divide(int,int) 无法在prog56pack2interface 中实现divide(int,int)。

关于我在哪里以及为什么我错了的任何 cmets 都会非常有帮助。

【问题讨论】:

  • For 1) 您需要实现 interfaceall 方法(或将您的类声明为 abstract 并让您的类的扩展处理您拥有的那些't)。
  • 以上评论属实!对于 2),我认为我们需要更多的代码(您的代码以及错误的堆栈跟踪)。如果你从接口实现一个方法,它不应该抛出异常。
  • @Lutzi 当“抛出”被删除时它会编译,但我不明白为什么?执行方法“divide()”时抛出错误,它说“重写的方法不会抛出 IOException”
  • 如果没有看到完整的异常消息、您对 divide() 的实现以及您如何使用它,我无法为您提供帮助。

标签: java interface package


【解决方案1】:

1) 您需要在实现它的第一个具体类中实现 all 方法。

2)当实现一个接口有一个抛出异常的方法时,你不需要在覆盖它的方法中声明那个异常

【讨论】:

    【解决方案2】:

    该类必须实现接口的所有方法(或为abstract)。

    接口方法的实现不能抛出接口未声明的异常。在您的情况下,请从您的班级中删除 throws 并改用 try ... catch

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2022-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多