#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. @Баста Рад это слышать. Продолжайте кодировать. Лучший способ научиться-это делать.