Заведём жабу? Часть 8. Теория наследования.

Теория наследования.

Наследование позволяет создавать классы на основе существующих. То есть мы повторно используем написанный один раз код. Другими словами класс может унаследоваться от существующего класса и добавить какие-то свои методы или изменить метод родительского класса. Таким образом у нас получится новый класс с дополненным функционалом родительского класса или по другому новый класс будет уметь всё, что умел родительский класс, плюс добавит что-то своё.

Наследование можно назвать расширением, так как дочерний класс расширяет родительский. Представим, что у нас есть два класса. У первого класса есть три метода. Класс 2, допустим, пустой и ни с чем не связан. Класс 2 хочет унаследоваться от класса 1. В этом случае класс 1 будет являться родительским классом или по другому «суперклассом,» а класс 2 — дочерним классом, или по другому подклассом.

Родительский класс — это класс от которого наследуют, а дочерний класс — это класс, который наследует родительский. Родительский класс по другому ещё называют базовый, дочерний класс называют производный или потомок.

После того, как мы унаследовались от класса 1 — методы класса 1 становятся доступны и во втором классе. Как будто они автоматически скопировались в программный код и теперь эти методы можно использовать и в классе 2.  Нам не нужно вручную копировать эти методы из класса 1 и вставлять их в класс 2 — в этом случае идёт повторное использование кода.

Чаще всего применяется следующий вариант: класс 2 после наследования добавляет какие-то свои методы реализации, которые будут доступны также, как и наследуемые.

Можно сказать, что класс 2 расширил функционал класса 1, усовершенствовал его. Класс 2 умеет делать всё, что умел класс 1 и плюс добавил что-то своё.

Второй вариант: класс 2 наследует все методы класса 1 и переопределяет некоторые из них или даже все, и плюс добавляет какие-то свои методы.

После всех этих манипуляций у класса 2 доступны переопределённые методы 1 и 2, затем наследованный метод 3 и собственные методы 4 и 5. Таким образом происходит переопределение метода родтельского класса. По другому ещё говорят перезаписанный метод. Это значит, что класс 2 может полностью изменить поведение переопределённого метода родительского класса, а также он может просто доработать функционал родительского метода.

Также дочерний класс может наследовать не только методы, но и поля или переменные родительского класса. Ниже представлено наследование на примере модели телефона Iphone.

Когда выше первый Iphone — он имел следующие возможности: управление касанием пальца, возможность совершать звонки, отправлять смс, слушать музыку, смотреть фильмы, использовать Интернет, фотографировать и т.д. Можно сказать это методы объекта Iphone 1.

Также Iphone 1 имел свойства. Такие как размеры, материал, вес, дизайн, процессор и размер камеры в мегапикселах.

Можно сказать, что Iphone 4S является усовершенствованной моделью первого Iphone, или по другому Iphone 4s унаследовался от Iphone 1, и в новом объекте Iphone 4s были переопределены следующие методы: управление касанием пальца, изменилась работа в Интернете (удобнее, быстрее), изменился формат отображения информации на экране (Retina), изменился метод фото.

Унаследованные методы, которые не изменились в 4-й модели Iphone — звонить, писать смс, слушать музыку, смотреть фильмы. Эти методы в некотором роде являются теми же самыми методами, которые были в первом Iphone. Также в Iphone 4s были переопределены свойства: размер, материал производства, вес, боле мощный процессор, увеличился размер камеры в мп.

Были добавлены новые методы, которых не было в первом Iphone — поддержка 3G, GPS-навигация, возможность распознавания речи. Таким образом объект Iphone 4s унаследовался от первого Iphone, некоторые его методы переопределил, некоторые методы оставил без изменений, затем некоторые свойства переопределил и добавил свои собственные методы. Объект Iphone 4s расширил объект Iphone.

Также наследование объектов можно увидеть в повседневной жизни. Есть объект автомобиль — затем два дочерних объекта, которые наследуются от автомобиля. К примеру марки автомобилей Toyota и BMW. То есть они являются более специализированным объектом автомобиль.

Затем объект Toyota Имеет более детализированные объекты, такие как Camry и RAV4. Также у BMW (X5 и X6). Таким образом построилось дерево зависимости от объектов от самой верхний (автомобиль) и заканчивая конкретной моделью. Но в то же время для объекта автомобиль можно найти свой родительский объект, например транспорт. У транспорта есть свой родительский объект и так до бесконечности.

Чем выше находится объект, тем у него более общий смысл. Чем ниже находится объект, тем у него смысл более детализированный, более расширенный или усовершенствованный.

 

Поделиться ссылкой:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *