SlideShare a Scribd company logo
1 of 44
Download to read offline
ОБЪЕКТНО-
ОРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ.
ИСКЛЮЧЕНИЯ.
ЧАСТЬ I.
ОБЪЕКТНО-
ОРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ
В ООП выделяют 4 парадигмы (принципа):
Наследование
Полиморфизм
Инкапсуляция
Абстракция
НАСЛЕДОВАНИЕ
Наследованием называется возможность создавать класс
путем расширения функциональности другого класса, с
сохранением свойств и методов класса-предка (прародителя,
иногда его называют суперклассом) .
Набор классов, связанных отношением наследования,
называют иерархией.
ПОЛИМОРФИЗМ
Полиморфизмом называется взаимозаменяемость
объектов имеющих одинаковый набор методов.
Достигается полиморфизм созданием метода в классе
наследнике, сигнатура которого совпадает с методом в
супер классе.
ИНКАПСУЛЯЦИЯ
Предназначена для сокрытия реализации определенных
методов и полей от пользователя-программиста
АБСТРАКЦИЯ
Предназначена для выделения важного функционала,
упрощая процесс программирования.
Так, допустим, для езды на машине мы не будем
использовать несколько разных методов для запуска
двигателя, управления автомобилем, использование
педалей, и т.д.
Вместо это у нас будет единственный метод управления
машиной, который будет более глубоко раскрывать
логику
КЛАСС
Класс - это базовым элементом объектно-ориентированного программирования ,
который является шаблоном для создания объекта.
Классы по умолчанию имеют доступ default, к тому же обратите внимание,
Что мы не сможем сделать импорт класса из default package.
Объект - это экземпляр класса.
Все, что объявлено внутри класса – это член класса.
Если это переменная – поле класса.
Если метод – метод класса.
Классы высшего уровня не могут иметь модификатор
доступа private или static. Только public, abstract, final
Тем не менее, вложенные классы могут быть
приватными
КОНСТРУКТОР
Конструктор требуется для создания экземпляра класса с
определенными параметрами. У каждого объекта есть
конструктор по умолчанию. Он вызывается, если никаких
других конструкторов не было вызвано.
Конструктор может быть
По умолчанию (Без параметров)
С параметрами
Для обращения к полю конкретного экземпляра
используется ключевое слово this
ПЕРЕГРУЗКА МЕТОДОВ
И КОНСТРУКТОРОВ
Методы и конструкторы перегружаются, если меняются
определенные части сигнатуры (входящие параметры,
возвращаемое значение), но не ИМЯ.
МЕТОДЫ КЛАССА
По умолчанию, методы класса имеют модификатор
доступа default (package-only).
В параметры метода можно передать любой объект
СТАТИЧЕСКИЕ
МЕТОДЫ КЛАССОВ
Объявляя поле класса, мы декларируем то, что каждый
экземпляр класса будет иметь такое поле. Но, у нас есть
возможность создавать поля и методы, которые будут
являться общими для всех экземпляров класса. Такие
поля называются статическими. Создается такое поле с
помощью спецификатора static .
НАСЛЕДОВАНИЕ
Для того что бы расширить функциональность класса
используется ключевое слово extends.
В Java доступ к полям и методам базового класса зависит от
спецификаторов доступа.
Спецификатор доступа в
суперклассе
Доступ
private Доступ к полям и методам
со спецификатором
private, класс наследник
не имеет
protected Поля и методы со
спецификатором protected
доступны только в
методах класса
наследника
public Доступ к полям и методом
со спецификатором public
можно получить через
объект производного
класса
Обратите внимание, что при вызове конструктора
дочернего класса, также будет вызван и конструктор по
умолчанию родительского класса, но неявно.
ПЕРЕОПРЕДЕЛЕНИЕ
МЕТОДОВ
Для переопределения методов используется аннотация
@Override над сигнатурой метода. Сигнатура
переопределенного метода должна совпадать с
сигнатурой родительского метода
Реализация родительского метода может быть
принудительно вызвана с помощью ключевого слова
super.[Имя метода]();
КАКОВ БУДЕТ РЕЗУЛЬТАТ
ВЫПОЛНЕНИЯ
ПРОГРАММЫ?
ОТВЕТ
4-ый вывод равен Bye, а не Hello.
Т.к. дочерний метод вызывает реализацию родительского
класса, а не его значение. В данном случае будет вызвать
метод .Say() класса С
ДИНАМИЧЕСКАЯ
ДИСПЕТЧЕРИЗАЦИЯ
МЕТОДОВ
Динамической диспетчеризацией является способность
ссылочной переменной суперкласса указать ссылку по
подкласс и вызвать переопределенный метод.
Данная концепция тесно связано с понятием
полиморфизма.
Обращение к объекту происходит во время выполнения,
а не компляции
+ Можно работать с объектами одинаково. Отлично
проявляет себя при работе с коллекциями, где хранятся
элементы разных классов, но имеющих один супер
класс.
- Небольшие накладные расходы на вызов. Объекты
занимают больше места из-за их таблицы виртуальных
методов
АБСТРАКТНЫЙ
КЛАСС
Абстрактным называется класс, содержащий хотя бы один
абстрактный метод.
Абстрактным называется метод, не содержащий
реализации, другими словами метод в классе существует
(тип возвращаемого значение, имя, параметры) а его тело
отсутствует.
Следовательно, если мы имеем метод без реализации то
создать экземпляр такого класса не можем, т.к. вызвать
такой метод невозможно.
Абстрактные классы не могут быть final.
ИНТЕРФЕЙС
Интерфейс — это элемент языка программирования который, специфицирует набор услуг,
предоставляемых классом. Другими словами интерфейс - это элемент языка программирования
который содержит описание методов, но не содержит их реализацию. Объявление интерфейсов очень
похоже на упрощенное объявление классов.
Оно начинается с заголовка. Сначала указываются модификаторы. Интерфейс может быть объявлен
как public и тогда он будет доступен для общего использования, либо модификатор доступа может не
указываться, в этом случае интерфейс доступен только для типов своего пакета.
Модификатор abstract для интерфейса не требуется, поскольку все интерфейсы являются
абстрактными. Его можно указать, но делать этого не рекомендуется, чтобы не загромождать код.
Далее записывается ключевое слово interface и имя интерфейса.
После этого может следовать ключевое слово extends и список интерфейсов, от которых будет
наследоваться объявляемый интерфейс. Родительских типов может быть много, главное, чтобы не
было повторений и чтобы отношение наследования не образовывало циклической зависимости.
Чтобы реализовать интерфейс в классе, требуется использовать фразу
class название_класса implements название_интерфейса
В интерфейсе не может быть приватных методов
Интерфейс высшего уровня может быть только public и
abstract
Вложенный интерфейс может быть static и private
Статический интерфейс могут реализовывать как
статические, так и не статические классы
От статического интерфейса могут наследоваться как
статические, так и не статические интерфейсы
Интерфейсы могут иметь переменные. Они будут final и
static
ИНТЕРФЕЙС МОЖНО
ИСПОЛЬЗОВАТЬ ДЛЯ
ПОЛИМОРФИЗМА
ПОДКЛАСС
Подклассом (subclass) – называется класс, объявленный
внутри другого класса. Подклассы используются:
● При реализации класса со сложной логикой работы.
Возможна ситуация в которой Вам понадобятся
некоторые вспомогательные классы (для расчетов,
специфического вывода информации и т.д.). Что бы «не
засорять» проект служебными классами, как правила их
реализуют в виде подклассов.
● Для реализации класса помощника, который позволяет
управлять экземпляром другого класса.
Подкласс имеет доступ ко всем полям внешнего класса, а
так же спецификатор доступа который определяет, может ли
быть доступен нам экземпляр подкласса за пределами
внешнего класса.
Спецификатор доступа подкласса определяет доступность
класса за пределами внешнего. Спецификатор доступа
private указывает на то, что доступ к полям и методам
внутреннего класса имеет только внешний класс, а
спецификаторы public и protected указывают что доступ к
полям и методам может получить любой класс программы.
Так же следует отметить, что наличие спецификатора
доступа private запрещает использовать подкласс в классах
наследниках внешнего.
Инициализация внутреннего класса практически не
отличается от иниц. Внешнего класса, за исключением того,
что требуется явно специфицировать его внешний класс

More Related Content

What's hot

Java core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptJava core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptAnton Moiseenko
 
SOLID & GRASP
SOLID & GRASPSOLID & GRASP
SOLID & GRASPdevel123
 
Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Unguryan Vitaliy
 
принципы объектного подхода
принципы объектного подходапринципы объектного подхода
принципы объектного подходаAndrey Radionov
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Unguryan Vitaliy
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.Unguryan Vitaliy
 
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного ПроектированияGRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного ПроектированияAlexander Nemanov
 
Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Unguryan Vitaliy
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеmetaform
 
C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.Igor Shkulipa
 
Шаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеШаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеSergey Nemchinsky
 
Java. Инкапсуляция.
Java. Инкапсуляция.Java. Инкапсуляция.
Java. Инкапсуляция.Unguryan Vitaliy
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVCUnguryan Vitaliy
 
C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.Igor Shkulipa
 
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.Unguryan Vitaliy
 
Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в javaUnguryan Vitaliy
 

What's hot (20)

Java core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptJava core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.ppt
 
SOLID & GRASP
SOLID & GRASPSOLID & GRASP
SOLID & GRASP
 
Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.
 
принципы объектного подхода
принципы объектного подходапринципы объектного подхода
принципы объектного подхода
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.
 
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного ПроектированияGRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
 
Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследование
 
C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.
 
Шаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеШаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. Введние
 
Java. Инкапсуляция.
Java. Инкапсуляция.Java. Инкапсуляция.
Java. Инкапсуляция.
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVC
 
C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.
 
Принципы SOLID
Принципы SOLIDПринципы SOLID
Принципы SOLID
 
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.
 
Step 5
Step 5Step 5
Step 5
 
Step 3.2
Step 3.2Step 3.2
Step 3.2
 
SOLID
SOLIDSOLID
SOLID
 
Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в java
 

Similar to Step 3.1

C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5Technopark
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.Unguryan Vitaliy
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.Igor Shkulipa
 
основы ооп
основы оопосновы ооп
основы оопDmitry Savin
 
Lec 2 Java
Lec 2 JavaLec 2 Java
Lec 2 Javaitc73
 
презентация конспекта лекций
презентация конспекта лекцийпрезентация конспекта лекций
презентация конспекта лекцийstudent_kai
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroAnton Moiseenko
 
C++ Базовый. Занятие 16.
C++ Базовый. Занятие 16. C++ Базовый. Занятие 16.
C++ Базовый. Занятие 16. Igor Shkulipa
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.Igor Shkulipa
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.Igor Shkulipa
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.Igor Shkulipa
 
C++ осень 2012 лекция 2
C++ осень 2012 лекция 2C++ осень 2012 лекция 2
C++ осень 2012 лекция 2Technopark
 
02 - Классы и Объекты
02 - Классы и Объекты02 - Классы и Объекты
02 - Классы и Объектыphearnot
 
Moodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программистаMoodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программистаIgor Sazonov
 
Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5Lilia Smirnova
 
АРК-ПЗ-1.pptx
АРК-ПЗ-1.pptxАРК-ПЗ-1.pptx
АРК-ПЗ-1.pptxrobete3065
 
SOLID Principles in the real world
SOLID Principles in the real worldSOLID Principles in the real world
SOLID Principles in the real worldEPAM
 

Similar to Step 3.1 (20)

C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5
 
Наследование и полиморфизм
Наследование и полиморфизмНаследование и полиморфизм
Наследование и полиморфизм
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.
 
основы ооп
основы оопосновы ооп
основы ооп
 
Lec 2
Lec 2Lec 2
Lec 2
 
Lec 2 Java
Lec 2 JavaLec 2 Java
Lec 2 Java
 
презентация конспекта лекций
презентация конспекта лекцийпрезентация конспекта лекций
презентация конспекта лекций
 
Классы и объекты С#
Классы и объекты С#Классы и объекты С#
Классы и объекты С#
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. Intro
 
C++ Базовый. Занятие 16.
C++ Базовый. Занятие 16. C++ Базовый. Занятие 16.
C++ Базовый. Занятие 16.
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.
 
C++ осень 2012 лекция 2
C++ осень 2012 лекция 2C++ осень 2012 лекция 2
C++ осень 2012 лекция 2
 
02 - Классы и Объекты
02 - Классы и Объекты02 - Классы и Объекты
02 - Классы и Объекты
 
Moodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программистаMoodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программиста
 
Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5
 
АРК-ПЗ-1.pptx
АРК-ПЗ-1.pptxАРК-ПЗ-1.pptx
АРК-ПЗ-1.pptx
 
SOLID Principles in the real world
SOLID Principles in the real worldSOLID Principles in the real world
SOLID Principles in the real world
 

Step 3.1

  • 2. ОБЪЕКТНО- ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В ООП выделяют 4 парадигмы (принципа): Наследование Полиморфизм Инкапсуляция Абстракция
  • 3. НАСЛЕДОВАНИЕ Наследованием называется возможность создавать класс путем расширения функциональности другого класса, с сохранением свойств и методов класса-предка (прародителя, иногда его называют суперклассом) . Набор классов, связанных отношением наследования, называют иерархией.
  • 4. ПОЛИМОРФИЗМ Полиморфизмом называется взаимозаменяемость объектов имеющих одинаковый набор методов. Достигается полиморфизм созданием метода в классе наследнике, сигнатура которого совпадает с методом в супер классе.
  • 5.
  • 6. ИНКАПСУЛЯЦИЯ Предназначена для сокрытия реализации определенных методов и полей от пользователя-программиста
  • 7. АБСТРАКЦИЯ Предназначена для выделения важного функционала, упрощая процесс программирования. Так, допустим, для езды на машине мы не будем использовать несколько разных методов для запуска двигателя, управления автомобилем, использование педалей, и т.д. Вместо это у нас будет единственный метод управления машиной, который будет более глубоко раскрывать логику
  • 8.
  • 9. КЛАСС Класс - это базовым элементом объектно-ориентированного программирования , который является шаблоном для создания объекта. Классы по умолчанию имеют доступ default, к тому же обратите внимание, Что мы не сможем сделать импорт класса из default package. Объект - это экземпляр класса. Все, что объявлено внутри класса – это член класса. Если это переменная – поле класса. Если метод – метод класса.
  • 10.
  • 11. Классы высшего уровня не могут иметь модификатор доступа private или static. Только public, abstract, final
  • 12. Тем не менее, вложенные классы могут быть приватными
  • 13. КОНСТРУКТОР Конструктор требуется для создания экземпляра класса с определенными параметрами. У каждого объекта есть конструктор по умолчанию. Он вызывается, если никаких других конструкторов не было вызвано.
  • 14. Конструктор может быть По умолчанию (Без параметров) С параметрами
  • 15.
  • 16. Для обращения к полю конкретного экземпляра используется ключевое слово this
  • 17. ПЕРЕГРУЗКА МЕТОДОВ И КОНСТРУКТОРОВ Методы и конструкторы перегружаются, если меняются определенные части сигнатуры (входящие параметры, возвращаемое значение), но не ИМЯ.
  • 18.
  • 19. МЕТОДЫ КЛАССА По умолчанию, методы класса имеют модификатор доступа default (package-only). В параметры метода можно передать любой объект
  • 20.
  • 21. СТАТИЧЕСКИЕ МЕТОДЫ КЛАССОВ Объявляя поле класса, мы декларируем то, что каждый экземпляр класса будет иметь такое поле. Но, у нас есть возможность создавать поля и методы, которые будут являться общими для всех экземпляров класса. Такие поля называются статическими. Создается такое поле с помощью спецификатора static .
  • 22.
  • 23. НАСЛЕДОВАНИЕ Для того что бы расширить функциональность класса используется ключевое слово extends.
  • 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
  • 38.
  • 39.
  • 41. ПОДКЛАСС Подклассом (subclass) – называется класс, объявленный внутри другого класса. Подклассы используются: ● При реализации класса со сложной логикой работы. Возможна ситуация в которой Вам понадобятся некоторые вспомогательные классы (для расчетов, специфического вывода информации и т.д.). Что бы «не засорять» проект служебными классами, как правила их реализуют в виде подклассов. ● Для реализации класса помощника, который позволяет управлять экземпляром другого класса.
  • 42.
  • 43. Подкласс имеет доступ ко всем полям внешнего класса, а так же спецификатор доступа который определяет, может ли быть доступен нам экземпляр подкласса за пределами внешнего класса. Спецификатор доступа подкласса определяет доступность класса за пределами внешнего. Спецификатор доступа private указывает на то, что доступ к полям и методам внутреннего класса имеет только внешний класс, а спецификаторы public и protected указывают что доступ к полям и методам может получить любой класс программы. Так же следует отметить, что наличие спецификатора доступа private запрещает использовать подкласс в классах наследниках внешнего.
  • 44. Инициализация внутреннего класса практически не отличается от иниц. Внешнего класса, за исключением того, что требуется явно специфицировать его внешний класс