Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РГТЭУ инфа экзамен.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
149.71 Кб
Скачать
  1. Основные отличия интерфейсов от классов.

В абстрактном классе можно написать реализацию метода, в интерфейсе - нет. Абстрактный класс может иметь конструктор, а интерфейс нет. Класс может иметь родителем только один класс(абстрактный или нет), но несколько интерфейсов.

  1. Особенности наследования интерфейсов.

Объектно-ориентированное программирование дает возможность не только определить класс, задающий состояние и поведение объектов, но и организовать семейство классов с помощью важного отношения между классами, называемого отношением наследования.

Суть наследования в том, что новый класс в момент его создания можно объявить наследником одного или нескольких базовых классов. Пусть уже определен класс A, и при определении новый класс В объявлен наследником класса А. В этом случае класс В наследует все открытые для потомков свойства и поведение класса А, наследует его интерфейс. Это означает, что в классе В автоматически определены переменные и методы класса А, задающие интерфейс.

Класс А называется базовым (родительским) по отношению к производному (порожденному) классу В. Очень часто, говоря о наследовании, используют терминологию “родительский класс” и “класс-потомок”. Ввиду транзитивности наследования (транзитивность означает, что из утверждений “А родитель В” и “В родитель С” следует “А родитель С”) каждый класс может иметь множество родителей (предков) и множество потомков, среди которых выделяют “непосредственных родителей” и “непосредственных потомков". Потомок транзитивно наследует свойства и поведение всех своих предков.

В производном классе можно определить новые свойства и новое поведение, задав новые переменные и новые методы. Более того, в производном классе можно переопределить существующий метод базового класса.

Наследование называется множественным, если производный класс может быть наследником нескольких базовых классов, т.е. иметь более одного непосредственного родителя. При обычном (не множественном) наследовании каждый производный класс наследует свойства только одного базового класса, т.е. имеет одного непосредственного родителя.

Отношение наследования обычно представляют в виде графа, узлы которого соответствуют классам, и из узла A в узел B ведет дуга, если класс B является непосредственным наследником класса A. Этот граф изображает структуру совокупности классов с точки зрения наследования. Если наследование не множественное, то соответствующий граф является деревом. В корне дерева находится прародитель — класс, для которого все остальные классы являются его потомками-наследниками.

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

  • объявить новые переменные 

  • объявить новые методы 

  • переопределить (перегрузить, перекрыть) методы базового класса.

Переопределение метода класса A в производном классе В, называемое также перегрузкой (overloading) или перекрытием (overriding), — это определение в классе B метода с именем, которое уже является именем некоторого метода класса А.