Я учусь писать классы реализации отдельно для интерфейса в пакете, но продолжаю получать ошибки? - PullRequest
0 голосов
/ 22 января 2020

Это мой интерфейс:

  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;
        }
    }
}

У меня было 2 основных сомнения:

1) почему я получаю эту ошибку, когда я компилирую приведенный выше код, как

prog56pack2implclasses1 не является абстрактным и не переопределяет publi c класс prog56pack2implclasses1 реализует prog56pack2interface

2) Когда я включаю метод Div (), который запрашивает у пользователя операцию ввода-вывода, я получаю сообщение об ошибке: (я включил IOException рядом с методом)

Делить (Int, Int) в prog56pack2implclasses1 нельзя реализовать деление (int, int) в prog56pack2interface.

любые комментарии относительно того, где и почему я ошибаюсь, были бы очень полезны.

Ответы [ 2 ]

1 голос
/ 22 января 2020

Класс должен реализовывать все методы интерфейса (или быть abstract).

Реализация метода интерфейса не может выдавать исключения, которые интерфейс не объявляет. В вашем случае удалите throws из вашего класса и используйте вместо него try ... catch.

1 голос
/ 22 января 2020

1) Вам необходимо реализовать все методы в первом конкретном классе, который его реализует.

2) При реализации интерфейса, у которого есть метод, который выдает исключение, вам не нужно объявлять это исключение в методе, который переопределяет его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...