Языки программирования - концепции и принципы

Наверху иерархии находится класс, называющийся


Наверху иерархии находится класс, называющийся ANY. Присваи­вание и равенство определены внутри ANY, но могут быть замещены внутри класса. Синтаксис для наследования такой же, как в языке C++: унаследован­ные классы перечисляются после имени класса. Если задан класс Airplane_Data:

class Airplane_Data

feature

     Set_Speed(l: Integer) is...

     Get_Speed: Integer is....

feature {}

       ID: STRING;

       Speed: Integer;

      Altitude: Integer;

end;                                             -- class Airplane_Data

его можно наследовать следующим образом:

class SSTJData inherit

     Airplane_Data

           redefine

                Set_Speed, Get_Speed

          end

feature

        Set_Speed(l: Integer) is...

        Get_Speed: Integer is...

feature {}

       Mach: Real;

end; — class SST_Data

Все свойства в базовом классе наследуются с их экспортируемыми атрибута­ми в неизменном виде. Однако для производного класса программист может переопределить некоторые или все унаследованные свойства. Переопределя­емые свойства должны быть явно перечислены в redefine-конструкции, кото­рая следует за inherit-конструкцией. Кроме переопределения, свойство можно просто переименовать. Обратите внимание, что унаследованное свойство мо­жет быть реэкспортировано из класса, даже если оно было приватным в базо­вом классе (в отличие от языков C++ и Ada 95, которые не разрешают втор­гаться в ранее скрытую реализацию).

    Среда языка Eiffel может отображать плоскую (flat) версию класса, которая показывает все действующие на данный момент свойства, даже если они бы­ли унаследованы и повторно объявлены где-то еще в иерархии. Таким обра­зом, интерфейс класса отчетливо отображается, и программисту не нужно «раскапывать» иерархию, чтобы точно увидеть, что было переобъявлено, а что не было.

    Eiffel, аналогично языку C++, но, в отличие от языка Ada 95, использует подход отличимого получателя, поэтому нет необходимости задавать явный параметр для объекта, подпрограмма которого должна быть вызвана:


Содержание  Назад  Вперед