1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.

Презентация:



Advertisements
Похожие презентации
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Advertisements

1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Лекция 2: Описание класса 1. Поля 2. Методы 3. Конструкторы.
Встроенные классы в Java Макаревич Л. Г.. Разновидности встроенных классов Вложенные (Nested) классы Внутренние (Inner) классы Локальные классы Анонимные.
Лекция 3 Принципы объектно- ориентированного программирования.
Основы ООП и C# Работа с объектами и классами. Классы Класс специальный тип данных для описания объектов. Он определяет данные и поведение типа. Определение.
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
§ 22 Предпочитайте статические поля классов - другим.
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Принципы объектно-ориентированного программирования Объектная модель Наследование Инкапсуляция Полиморфизм.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
Классы в С#. Перечисления С# Перечисление задает конечное множество возможных значений, которые могут получать объекты класса перечисление. [атрибуты][модификаторы]
Объектно-ориентированный подход в языке C#. Класс в языке C# - ссылочный тип, определенный пользователем. Для классов ЯП C# допустимо только единичное.
Лекция 8 Область видимости Время жизни. Область видимости Область видимости – характеристика именованного объекта Область видимости - часть текста программы,
Множественное наследование class A {... }; class B {... }; class C : public A, protected B {... }; !!! Спецификатор доступа распространяется только на.
Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ к закрытым и защищенным полям данного класса Дружественная.
1 © Luxoft Training 2013 Модуль 7 Введение Исследование классов 7-1 Механизм Reflection.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Транксрипт:

1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8

2 © Luxoft Training 2012 Перечисления Вложенные классы Статические вложенные классы Классы, определенные внутри метода Анонимные классы Модуль 8 Расширенные вопросы

3 © Luxoft Training 2012 Перечисления Очень часто требуется вводить перечислимые типы:

4 © Luxoft Training 2012 Перечисления В Java 1.5 появился новый механизм перечислений (enum). Перечисление – это подкласс класс java.lang.Enum. Перечисление решает указанную проблему и может быть использовано в операторе switch. Перечисление – это обычный класс, с некоторыми ограничениями.

5 © Luxoft Training 2012 Перечисления и оператор switch

6 © Luxoft Training 2012 Отличие перечислений от классов Декларируются с помощью ключевого слова enum Нельзя явно создавать экземпляр перечисления. Нельзя расширять перечисление. Перечисление может быть аргументом в switch.

7 © Luxoft Training 2012 Конструкторы для перечислений

8 © Luxoft Training 2012 Перечисления Результат: Имеет встроенный метод name(), возвращающий значение перечисления. Статический метод values() позволяет получить список всех значений перечисления.

9 © Luxoft Training 2012 Перечисления Вложенные классы Статические вложенные классы Классы, определенные внутри метода Анонимные классы Модуль 8 Расширенные вопросы

10 © Luxoft Training 2012 Вложенные классы Вложенный класс – это класс, объявленый в рамках описания другого класса. Класс можно объявить в любом блоке, включая блоки, являющиеся частью метода. Вложенные классы отличаются своей видимостью и областью доступа. Внимание! Классы, вложенные в метод, называются локальными.

11 © Luxoft Training 2012 Пример вложенного класса

12 © Luxoft Training 2012 Вложенные классы Полное имя вложенного класса в примере OuterOne.InnerOne. После компиляции создается отдельный файл с именем OuterOne$InnerOne.class. Для создания внутреннего класса, необходим экземпляр внешнего класса, который выступает в роли контекста. Внимание! Все атрибуты внешнего класса доступны вложенному классу в следствии существования ссылки вложенного класса на внешний (позже в этом модуле).

13 © Luxoft Training 2012 Вложенные классы Создать экземпляр вложенного класса можно только через экземпляр внешнего класса. public static void main(String[] args) { OuterOne.InnerOne i = new OuterOne().new InnerOne(); i.innerMethod(); OuterOne outer = new OuterOne(); OuterOne.InnerOne inner = outer.new InnerOne(); } Вложенный класс может быть public, private или protected.

14 © Luxoft Training 2012 Перечисления Вложенные классы Статические вложенные классы Классы, определенные внутри метода Анонимные классы Модуль 8 Расширенные вопросы

15 © Luxoft Training 2012 Статические вложенные классы Вложенный класс может быть помечен как static. Вложенный статический класс не может использовать this для доступа к атрибутам внешнего объекта. Может обращаться к статическим переменным и методам внешнего класса.

16 © Luxoft Training 2012 Перечисления Вложенные классы Статические вложенные классы Классы, определенные внутри метода Анонимные классы Модуль 8 Расширенные вопросы

17 © Luxoft Training 2012 Классы внутри метода Все что объявлено внутри метода – не является членом класса. Локальные объекты не могут иметь модификаторов доступа и быть объявлеными как static. Возможно создание анонимных классов. Анонимный класс может иметь доступ к внешним объектам, только если они объявлены как final.

18 © Luxoft Training 2012 Классы внутри метода

19 © Luxoft Training 2012 Классы внутри метода

20 © Luxoft Training 2012 Перечисления Вложенные классы Статические вложенные классы Классы, определенные внутри метода Анонимные классы Модуль 8 Расширенные вопросы

21 © Luxoft Training 2012 Анонимные классы Иногда класс, определенный внутри метода, не нуждается в имени. Анонимный класс может быть объявлен как расширяющий другой, или как реализующий интерфейс.

22 © Luxoft Training 2012 Анонимные классы Иногда класс, определенный внутри метода, не нуждается в имени. Анонимный класс может быть объявлен как расширяющий другой, или как реализующий интерфейс.

23 © Luxoft Training 2012 Анонимные классы Пример: Закрытие пользовательского окна по клику на кнопке Close Реакция оформлена в виде отдельного класса: class CloseActionListener implements ActionListener

24 © Luxoft Training 2012 Анонимные классы

25 © Luxoft Training 2012 Анонимные классы Внимание! Нельзя использовать наследование и имплементацию одновременно.

26 © Luxoft Training 2012 Анонимные классы Анонимные классы удобны, чтоб избежать придумывания тривиальных имен для классов. Код класса содержит несколько строк. При компиляции создается класс, который называется EnclosingClassName$n, где n порядковый номер анонимного класса. Для анонимных классов нельзя определить конструктор. Можно вызвать конструктор родительского класса.

27 © Luxoft Training 2012 Упражнение Работа с вложенными классами.