метод абстрактора с типом возвращаемого объекта в java

#java #oop #abstract-class #abstract-methods

Вопрос:

Я новичок в ооп ,я хочу передать параметр объекта абстрактного метода, но он выдает мне ошибку, может ли кто-нибудь объяснить мне это и помочь мне исправить ошибку . Спасибо за вашу помощь.

 abstract class FunctionInt{
int num1;
int num2;

abstract FunctionInt test(FunctionInt newNum);

}

class Function extends FunctionInt{
public Function(int num1,int num2){
this.num1=num1;
this.num2=num2;
}
public Function (){

}

Function test(Function c){
return c;
}
 

Комментарии:

1. Вы изменили подпись test . Ты не можешь этого сделать и сохранить контракт. Также имена классов начинаются с заглавной буквы. Чем а Function отличается от а FunctionInt ? Почему это FunctionInt абстрактно? И какое поведение вы пытаетесь запрограммировать?

2. @ElliottFrisch можете ли вы , пожалуйста, исправить это для меня, тест метода должен возвращать тип объекта, как я могу сделать это с помощью абстрактного метода?

3. Некоторые ошибки : Имя конструктора должно быть равно имени класса и почему создание абстрактной функции

4. путают с понятиями УПС?? Я помогу вам проверить мой профиль и написать мне в instagram

Ответ №1:

Вы не можете изменить сигнатуру абстрактного метода. Вы создали совершенно новый метод, не связанный с методом, который вы хотели переопределить. Используйте @Override аннотацию, чтобы быстрее обнаружить этот класс ошибок.

 public class Function extends FunctionInt {
    public Function(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
    }

    public Function() {

    }

    @Override
    FunctionInt test(FunctionInt c) {
        return c;
    }
}
 

Комментарии:

1. Я пробовал это, но это также выдает ошибку ! потому что функция является абстрактной

2. Какая ошибка? Это, по крайней мере, компилируется.

3. Я ценю вашу помощь, спасибо, что она работает сейчас

4. @Баста Рад это слышать. Продолжайте кодировать. Лучший способ научиться-это делать.