3. НАСЛЕДОВАНИЕ
Наследованием называется возможность создавать класс
путем расширения функциональности другого класса, с
сохранением свойств и методов класса-предка (прародителя,
иногда его называют суперклассом) .
Набор классов, связанных отношением наследования,
называют иерархией.
7. АБСТРАКЦИЯ
Предназначена для выделения важного функционала,
упрощая процесс программирования.
Так, допустим, для езды на машине мы не будем
использовать несколько разных методов для запуска
двигателя, управления автомобилем, использование
педалей, и т.д.
Вместо это у нас будет единственный метод управления
машиной, который будет более глубоко раскрывать
логику
8.
9. КЛАСС
Класс - это базовым элементом объектно-ориентированного программирования ,
который является шаблоном для создания объекта.
Классы по умолчанию имеют доступ default, к тому же обратите внимание,
Что мы не сможем сделать импорт класса из default package.
Объект - это экземпляр класса.
Все, что объявлено внутри класса – это член класса.
Если это переменная – поле класса.
Если метод – метод класса.
10.
11. Классы высшего уровня не могут иметь модификатор
доступа private или static. Только public, abstract, final
12. Тем не менее, вложенные классы могут быть
приватными
13. КОНСТРУКТОР
Конструктор требуется для создания экземпляра класса с
определенными параметрами. У каждого объекта есть
конструктор по умолчанию. Он вызывается, если никаких
других конструкторов не было вызвано.
16. Для обращения к полю конкретного экземпляра
используется ключевое слово this
17. ПЕРЕГРУЗКА МЕТОДОВ
И КОНСТРУКТОРОВ
Методы и конструкторы перегружаются, если меняются
определенные части сигнатуры (входящие параметры,
возвращаемое значение), но не ИМЯ.
18.
19. МЕТОДЫ КЛАССА
По умолчанию, методы класса имеют модификатор
доступа default (package-only).
В параметры метода можно передать любой объект
20.
21. СТАТИЧЕСКИЕ
МЕТОДЫ КЛАССОВ
Объявляя поле класса, мы декларируем то, что каждый
экземпляр класса будет иметь такое поле. Но, у нас есть
возможность создавать поля и методы, которые будут
являться общими для всех экземпляров класса. Такие
поля называются статическими. Создается такое поле с
помощью спецификатора static .
24. В Java доступ к полям и методам базового класса зависит от
спецификаторов доступа.
Спецификатор доступа в
суперклассе
Доступ
private Доступ к полям и методам
со спецификатором
private, класс наследник
не имеет
protected Поля и методы со
спецификатором protected
доступны только в
методах класса
наследника
public Доступ к полям и методом
со спецификатором public
можно получить через
объект производного
класса
25. Обратите внимание, что при вызове конструктора
дочернего класса, также будет вызван и конструктор по
умолчанию родительского класса, но неявно.
26.
27. ПЕРЕОПРЕДЕЛЕНИЕ
МЕТОДОВ
Для переопределения методов используется аннотация
@Override над сигнатурой метода. Сигнатура
переопределенного метода должна совпадать с
сигнатурой родительского метода
Реализация родительского метода может быть
принудительно вызвана с помощью ключевого слова
super.[Имя метода]();
29. ОТВЕТ
4-ый вывод равен Bye, а не Hello.
Т.к. дочерний метод вызывает реализацию родительского
класса, а не его значение. В данном случае будет вызвать
метод .Say() класса С
30. ДИНАМИЧЕСКАЯ
ДИСПЕТЧЕРИЗАЦИЯ
МЕТОДОВ
Динамической диспетчеризацией является способность
ссылочной переменной суперкласса указать ссылку по
подкласс и вызвать переопределенный метод.
Данная концепция тесно связано с понятием
полиморфизма.
Обращение к объекту происходит во время выполнения,
а не компляции
31.
32. + Можно работать с объектами одинаково. Отлично
проявляет себя при работе с коллекциями, где хранятся
элементы разных классов, но имеющих один супер
класс.
- Небольшие накладные расходы на вызов. Объекты
занимают больше места из-за их таблицы виртуальных
методов
33.
34. АБСТРАКТНЫЙ
КЛАСС
Абстрактным называется класс, содержащий хотя бы один
абстрактный метод.
Абстрактным называется метод, не содержащий
реализации, другими словами метод в классе существует
(тип возвращаемого значение, имя, параметры) а его тело
отсутствует.
Следовательно, если мы имеем метод без реализации то
создать экземпляр такого класса не можем, т.к. вызвать
такой метод невозможно.
Абстрактные классы не могут быть final.
35.
36. ИНТЕРФЕЙС
Интерфейс — это элемент языка программирования который, специфицирует набор услуг,
предоставляемых классом. Другими словами интерфейс - это элемент языка программирования
который содержит описание методов, но не содержит их реализацию. Объявление интерфейсов очень
похоже на упрощенное объявление классов.
Оно начинается с заголовка. Сначала указываются модификаторы. Интерфейс может быть объявлен
как public и тогда он будет доступен для общего использования, либо модификатор доступа может не
указываться, в этом случае интерфейс доступен только для типов своего пакета.
Модификатор abstract для интерфейса не требуется, поскольку все интерфейсы являются
абстрактными. Его можно указать, но делать этого не рекомендуется, чтобы не загромождать код.
Далее записывается ключевое слово interface и имя интерфейса.
После этого может следовать ключевое слово extends и список интерфейсов, от которых будет
наследоваться объявляемый интерфейс. Родительских типов может быть много, главное, чтобы не
было повторений и чтобы отношение наследования не образовывало циклической зависимости.
Чтобы реализовать интерфейс в классе, требуется использовать фразу
class название_класса implements название_интерфейса
37. В интерфейсе не может быть приватных методов
Интерфейс высшего уровня может быть только public и
abstract
Вложенный интерфейс может быть static и private
Статический интерфейс могут реализовывать как
статические, так и не статические классы
От статического интерфейса могут наследоваться как
статические, так и не статические интерфейсы
Интерфейсы могут иметь переменные. Они будут final и
static
41. ПОДКЛАСС
Подклассом (subclass) – называется класс, объявленный
внутри другого класса. Подклассы используются:
● При реализации класса со сложной логикой работы.
Возможна ситуация в которой Вам понадобятся
некоторые вспомогательные классы (для расчетов,
специфического вывода информации и т.д.). Что бы «не
засорять» проект служебными классами, как правила их
реализуют в виде подклассов.
● Для реализации класса помощника, который позволяет
управлять экземпляром другого класса.
42.
43. Подкласс имеет доступ ко всем полям внешнего класса, а
так же спецификатор доступа который определяет, может ли
быть доступен нам экземпляр подкласса за пределами
внешнего класса.
Спецификатор доступа подкласса определяет доступность
класса за пределами внешнего. Спецификатор доступа
private указывает на то, что доступ к полям и методам
внутреннего класса имеет только внешний класс, а
спецификаторы public и protected указывают что доступ к
полям и методам может получить любой класс программы.
Так же следует отметить, что наличие спецификатора
доступа private запрещает использовать подкласс в классах
наследниках внешнего.
44. Инициализация внутреннего класса практически не
отличается от иниц. Внешнего класса, за исключением того,
что требуется явно специфицировать его внешний класс