#java
#java
Вопрос:
Я пишу класс для программы, в которую теперь мне нужно добавить метод для определения стоимости просроченной оплаты. Это относится к жанрам фильмов, где каждый жанр стоит что-то свое, но для того, который я буду использовать здесь, будет жанр драмы, который имеет плату за просрочку по умолчанию (эта переменная находится в другом классе, также переменная dayLate также находится в другом классе)
В любом случае, что мне нужно сделать, это сделать так, чтобы метод суммировал его как количество дней задержки, умноженное на плату. Прямо сейчас у меня есть это, но я получаю ошибку компилятора (также, если это имеет значение, класс с переменной dayLate еще не завершен или не скомпилирован)
В любом случае, вот исходный код класса Drama
class Drama extends Movie
{
public Drama()
{
super();
}
public Drama(String rating, int IDnumber, String MovieTitle)
{
super(rating, IDnumber, MovieTitle);
}
public double CalcLateFees(Fee * dayLate);
}
Я не думаю, что я правильно использовал этот метод.
Ответ №1:
Вы не можете написать свою логику в прототипе метода, вместо этого вы должны получить значения в качестве параметра и выполнить логику и вернуть значения, как показано ниже:
public double CalcLateFees(double fee, double dayLate) {
return (fee * dayLate);
}
Комментарии:
1. Спасибо, я думаю, это то, что мне нужно сделать, поставьте перед ним double, хотя мой dayLate имеет тип int (Извините, я не показал эту часть) Становится поздно, поэтому мне придется попробовать это завтра. Спасибо
Ответ №2:
Java не использует указатель, просто использует ссылку
Так что измените это
public double CalcLateFees(Fee * dayLate);
Для
public double CalcLateFees(Fee dayLate);
Также убедитесь, что Movie
класс имеет const по умолчанию и const с (String rating, int IDnumber, String MovieTitle)
аргументами
Комментарии:
1. Я не думаю, что он пытался использовать указатель, но вычислял в сигнатуре метода.
Ответ №3:
Предпочтение композиции перед наследованием. Попробуйте использовать свойство genre в классе movie. Класс genre может содержать участника с оплатой.
Ответ №4:
переключатель (ваш выбор) {
пример 1: Как-то реализовать свой метод CalclateFees:
public double CalcLateFees(Fee dayLate) {
double fee = 0;
....
return fee;
}
случай 2:
Объявите свой метод CalclateFees как абстрактный:
public abstract double CalcLateFees(Fee dayLate);
пример 3:
Пусть класс Fee обрабатывает вычисление:
public double CalcLateFees(Fee dayLate) {
return dayLate.calc(this);
}
}