Сделаем это, проходя по каждому из case и создавая соответствующий
перегружающий метод. Начнем с класса RegularPrice:
class RegularPrice...
double getCharge( int daysRented) {
double result = 2;
if( daysRented>2) result += ( daysRented-2)*1.5;
return result;
}
Здесь мы заменили родительский case, просто оставив его как есть. Компилируем
и запускаем тесты для этого случая, после чего делаем то же самое со следующим
case, снова компилируем и запускаем тесты. Чтобы убедиться, что выполняется
именно код дочернего класса, стоит внести преднамеренную ошибку и увидеть
отчет о сбое при запуске тестов. Только не подумайте, что я параноик или
что-то в этом духе.
class ChildrensPrice...
double getCharge( int daysRented) {
double result = 1.5;
if( daysRented>3) result += ( daysRented-3)*1.5;
return result;
}
class NewReleasePrice...
double getCharge( int daysRented) {
return daysRented*3;
}
После того, как мы закончили со всеми case, можно сделать метод
Price.getCharge абстрактным:
class Price...
abstract double getCharge( int daysRented);
В начало |
предыдущая |
следующая