Программирование для мобильных платформ. Android. Для студентов технических специальностей - страница 4

Шрифт
Интервал


Круг и квадрат являются схожими элементами (классами), а значит и поведение для них может быть задано одинаковое. Оба этих класса можно унаследовать от класса реализующие геометрические фигуры. Далее в родительском классе создать метод изменения цвета фона. И к объектам дочерних классов, в данном случае это квадрат и круг, можно применять этот метод. В этом случае поведение этих фигур будет одинаково, и в том, и в другом случае фон будет меняться, хоть и более подробная реализация этого метода в каждом дочернем классе может отличаться, так как сами фигуры разные.

Можно привести другой пример: в случае если создать объект родительского класса, а инициализировать его как объект дочернего, то это не вызовет никакой ошибки. Программа корректно обработает данный код. В случае нашего примера можно создать массив объектов геометрических фигур (родительского класса) и потом рандомно присваивать разным ячейкам этого массива разные дочерние классы, то это так же не вызовет никакой ошибки.

В этом и есть идея полиморфизма: объекты схожих классов обрабатываются одинаково. Однако если изначально создать массив объектов одного из дочерних классов, а потом к одной из ячеек присвоить объект другого дочернего класса, то это вызовет ошибку. Это вполне логично, так как при более детальной реализации эти классы разные.


Методы

В рамках ООП поведение объекта задают методы, которые так же описаны должны быть описаны при создании класса. Метод содержит в себе набор процедур, которые выполняются над объектом.

Метод аналогично функции в С++ может принимать или не принимать аргументы. В листинге указан способ создания метода, тип_метода – тип возвращаемого методом значения, тип1 и тип2 – типы данных первого и второго аргументов.

тип_метода имя_метода (тип1 имя_аргумента1, тип2 имя_аргумента2, …)

{

// тело метода

}

Если метод возвращает значение, то в его теле должен присутствовать оператор return имя_значения. Этот оператор возвращает имя_значения и прекращает выполнение метода. Важно чтобы переменная имя_значения имела тот же тип данных что и тип_метода и была инициализирована.

Если метод не возвращает значение, то тип_метода будет равен void, в этом случае присутствие оператора return вызовет ошибку. В листинге представлены примеры создания метода.