И наконец... наследованиеСтраница 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 >>