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

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



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

1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
Встроенные классы в Java Макаревич Л. Г.. Разновидности встроенных классов Вложенные (Nested) классы Внутренние (Inner) классы Локальные классы Анонимные.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Лекция 3 Принципы объектно- ориентированного программирования.
Лекция 2: Описание класса 1. Поля 2. Методы 3. Конструкторы.
Интерфейсы Лекция 4. Реализуйте очередь в виде списка, содержащую комплексные числа Реализуйте методы void Enqueue(Complex с ) – помещает число в очередь.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
§ 22 Предпочитайте статические поля классов - другим.
Методология объектно- ориентированного программирования.
Объектно-ориентированный подход в языке C#. Класс в языке C# - ссылочный тип, определенный пользователем. Для классов ЯП C# допустимо только единичное.
Принципы объектно-ориентированного программирования Объектная модель Наследование Инкапсуляция Полиморфизм.
Наследование. Наследование – это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся.
Кафедра ОСУ, Java 2007 Слайд 1 Определение классов и методов Java- программа состоит из объектов различных классов, взаимодействующих друг.
Интерфейсы Обобщения ( шаблоны ) Лекция 4. Интерфейсы Обобщения.
Ресурсы WPF Два типа ресурсов WPF: объектные ресурсы (object resource) – определенный.NET-объект, который можно использовать многократно; ресурсы сборки.
Лекция 8. Введение в ООП. Часть 1 Красс Александр СПбГУ ИТМО, 2008.
Кафедра ОСУ, Java 2004 Слайд 1 Наследование Наследование позволяет использовать существующий класс для определения новых классов, т.е. способствует.
Транксрипт:

1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ

2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса В Java два вида интерфейсов: интерфейсы, определяющие контракт для классов посредством методов, интерфейсы, реализация которых автоматически (без реализации методов) придает классу определенные свойства. example01 : объявление интерфейсов: LineGroup.java, Shape.java interface ИмяИнтерфейса [extends ИмяИнтерфейса1]{ тип Поле = ЗНАЧЕНИЕ; тип метод(); } Все объявленные в интерфейсе поля автоматически трактуются как public, static и final Все объявленные в интерфейсе методы автоматически трактуются как public и abstract

3 Реализация интерфейсов классом Класс может реализовывать любое число интерфейсов Класс обязан реализовать все методы, полученные от интерфейсов, или объявить себя абстрактным классом. example02 : реализация интерфейса: Rectangle.java Circle.java Triangle.java Runner.java example06 : динамический связывание методов : ShapeCreator.java [доступ] class ИмяКласса implements Имя1, Имя2,…, ИмяN { /*код класса*/ }

4 Внутренние классы В Java можно определить (вложить) один класс внутри определения другого класса, что позволяет группировать классы, логически связанные друг с другом, и динамично управлять доступом к ним. Цели создания внутренних классов: способ сокрытия реализации использование в качестве блоков прослушивания событий возможность независимого наследования внутренними классами Внутренние классы бывают: статические, вложенные (nested) нестатические, внутренние (inner)

5 Пример применения внутренних классов public Ship protected Engine public static Boat Запустить «Двигатель» можно только посредством использования объекта «Корабль» Класс «Шлюпка» также является логической частью класса «Корабль», однако данные объекты могут быть использованы независимо от наличия объекта «Корабль»

6 Внутренние (inner) классы Нестатические вложенные классы Объект внутреннего класса всегда ассоциируется (скрыто хранит ссылку) с создавшим его объектом внешнего класса – внешним (enclosing) объектом. Методы внутреннего класса имеют прямой доступ ко всем полям и методам внешнего класса. Доступ к элементам внутреннего класса возможен из внешнего класса только через объект внутреннего класса Внутренние классы не могут содержать статические атрибуты и методы, кроме констант (final static). После компиляции объектный модуль, соответствующий внутреннему классу, получит имя Владелец$Внутренний.class. example07 : внутренние (inner) классы : Ship.java Runner.java

7 Inner- классы и наследование public class WarShip extends Ship { protected class SpecialEngine extends Engine {} } public class Motor extends Ship.Engine { public Motor(Ship obj) { obj.super(); } конструктор класса Motor должен быть объявлен с параметром типа Ship, что позволит получить доступ к ссылке на внутренний класс Engine, наследуемый классом Motor. Внутренние классы имеют право наследовать другие классы, реализовывать интерфейсы и выступать в роли объектов наследования. Если внутренний класс наследуется обычным образом другим классом, то он теряет доступ к полям своего внешнего класса, в котором он был объявлен. example08

8 Модификаторы спецификации Inner-классов final abstract private protected public example11 : взаимодействие внешнего и внутреннего классов : Student.java, AnySession.java

9 Объявление внутри метода Внутренний класс может быть объявлен также внутри метода или логического блока внешнего класса. Видимость такого класса регулируется областью видимости блока, в котором он объявлен. Внутренний класс сохраняет доступ ко всем полям и методам внешнего класса константам, объявленным в текущем блоке кода Класс, объявленный внутри метода, НЕ МОЖЕТ быть объявлен как static содержать статические поля и методы example12 : внутренний класс, объявленный внутри метода TeacherLogic.java

10 Вложенные (nested) классы При объявлении такого внутреннего класса присутствует служебное слово static, и такой класс называется вложенным (nested). Вложенный класс способен наследовать другие классы, реализовывать интерфейсы являться объектом наследования для любого класса, обладающего необходимыми правами доступа. Статический вложенный класс напрямую имеет доступ только к статическим полям и методам внешнего класса, для доступа к нестатическим членам и методам внешнего класса должен создавать объект внешнего класса Подкласс вложенного класса не способен унаследовать возможность доступа к членам внешнего класса, которыми наделен его суперкласс example13 : вложенный класс: Ship.java, RunnerShip.java example14 : класс вложенный в интерфейс: Faculty.java, University.java

11 Анонимные (anonymous) классы Анонимные (безымянные) классы применяются для придания уникальной функциональности отдельно взятому объекту обработки событий, реализации блоков прослушивания и т.д. Объявление анонимного класса выполняется одновременно с созданием его объекта посредством оператора new. Анонимные классы эффективно используются, как правило, для реализации (переопределения) нескольких методов и создания собственных методов объекта. Конструкторы анонимных классов нельзя определять и переопределять. Анонимные классы допускают вложенность друг в друга, что может сильно запутать код и сделать эти конструкции непонятными. example15 : анонимные классы: TypeQuest.java, RunnerAnonym.java

12 Классы внутри интерфейсов interface ИмяИнтерфейса [extends ИмяИнтерфейса1]{ тип Поле = ЗНАЧЕНИЕ; тип метод(); [спецификаторы]class ИмяКласса [extends …][implements …]{ /* реализация класса */ } Все объявленные в интерфейсе классы автоматически трактуются как public и static example16 класс внутри интерфейса InInterface.java Интерфейсы тоже могут быть внутренними, пример: Map.Entry описывает пару ключ-значение ассоциативного словаря

13 Ключевые моменты