| И наконец... наследование | Страница 47 |
Сделаем это, проходя по каждому из 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);
Оглавление | << страница 46 | страница 48 >>