🗊Презентация Java SE 5. ООП в Java. Основные понятия

Нажмите для полного просмотра!
Java SE 5. ООП в Java. Основные понятия, слайд №1Java SE 5. ООП в Java. Основные понятия, слайд №2Java SE 5. ООП в Java. Основные понятия, слайд №3Java SE 5. ООП в Java. Основные понятия, слайд №4Java SE 5. ООП в Java. Основные понятия, слайд №5Java SE 5. ООП в Java. Основные понятия, слайд №6Java SE 5. ООП в Java. Основные понятия, слайд №7Java SE 5. ООП в Java. Основные понятия, слайд №8Java SE 5. ООП в Java. Основные понятия, слайд №9Java SE 5. ООП в Java. Основные понятия, слайд №10Java SE 5. ООП в Java. Основные понятия, слайд №11Java SE 5. ООП в Java. Основные понятия, слайд №12Java SE 5. ООП в Java. Основные понятия, слайд №13Java SE 5. ООП в Java. Основные понятия, слайд №14Java SE 5. ООП в Java. Основные понятия, слайд №15Java SE 5. ООП в Java. Основные понятия, слайд №16Java SE 5. ООП в Java. Основные понятия, слайд №17Java SE 5. ООП в Java. Основные понятия, слайд №18Java SE 5. ООП в Java. Основные понятия, слайд №19Java SE 5. ООП в Java. Основные понятия, слайд №20Java SE 5. ООП в Java. Основные понятия, слайд №21Java SE 5. ООП в Java. Основные понятия, слайд №22Java SE 5. ООП в Java. Основные понятия, слайд №23Java SE 5. ООП в Java. Основные понятия, слайд №24Java SE 5. ООП в Java. Основные понятия, слайд №25Java SE 5. ООП в Java. Основные понятия, слайд №26Java SE 5. ООП в Java. Основные понятия, слайд №27Java SE 5. ООП в Java. Основные понятия, слайд №28Java SE 5. ООП в Java. Основные понятия, слайд №29Java SE 5. ООП в Java. Основные понятия, слайд №30Java SE 5. ООП в Java. Основные понятия, слайд №31Java SE 5. ООП в Java. Основные понятия, слайд №32Java SE 5. ООП в Java. Основные понятия, слайд №33Java SE 5. ООП в Java. Основные понятия, слайд №34Java SE 5. ООП в Java. Основные понятия, слайд №35Java SE 5. ООП в Java. Основные понятия, слайд №36Java SE 5. ООП в Java. Основные понятия, слайд №37Java SE 5. ООП в Java. Основные понятия, слайд №38Java SE 5. ООП в Java. Основные понятия, слайд №39Java SE 5. ООП в Java. Основные понятия, слайд №40Java SE 5. ООП в Java. Основные понятия, слайд №41Java SE 5. ООП в Java. Основные понятия, слайд №42Java SE 5. ООП в Java. Основные понятия, слайд №43Java SE 5. ООП в Java. Основные понятия, слайд №44Java SE 5. ООП в Java. Основные понятия, слайд №45Java SE 5. ООП в Java. Основные понятия, слайд №46

Содержание

Вы можете ознакомиться и скачать презентацию на тему Java SE 5. ООП в Java. Основные понятия. Доклад-сообщение содержит 46 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Java SE
5. ООП в Java
Описание слайда:
Java SE 5. ООП в Java

Слайд 2





Основные понятия
Описание слайда:
Основные понятия

Слайд 3





Классы
Классы объявляют новый ссылочный тип и определяют его реализацию
Вложенный (nested) класс – это класс объявленный внутри другого класса или интерфейса (в том числе класс объявленный внутри метода или блока):
member class – объявленный внутри класса
local class – объявленный внутри метода
anonymous class – не имеющий имени
Класс верхнего уровня(top-level) – это класс, не являющийся вложенным
Описание слайда:
Классы Классы объявляют новый ссылочный тип и определяют его реализацию Вложенный (nested) класс – это класс объявленный внутри другого класса или интерфейса (в том числе класс объявленный внутри метода или блока): member class – объявленный внутри класса local class – объявленный внутри метода anonymous class – не имеющий имени Класс верхнего уровня(top-level) – это класс, не являющийся вложенным

Слайд 4





Классы
Каждый класс кроме Object является наследником другого класса и может реализовывать (implements) произвольное количество интерфейсов
Тело класса может содержать:
члены (members): 
поля
методы
вложенные классы и интерфейсы
инициализаторы экземпляра
статические инициализаторы
конструкторы
Видимость членов и конструкторов регулируется модификаторами доступа 
	public, private, package(default), protected
Описание слайда:
Классы Каждый класс кроме Object является наследником другого класса и может реализовывать (implements) произвольное количество интерфейсов Тело класса может содержать: члены (members): поля методы вложенные классы и интерфейсы инициализаторы экземпляра статические инициализаторы конструкторы Видимость членов и конструкторов регулируется модификаторами доступа public, private, package(default), protected

Слайд 5





Пример объявления класса
Первым будет выполнен статический инициализатор (при загрузке класса в JVM)
Не статические инициализаторы будут выполнены при создании объекта в порядке объявления
Описание слайда:
Пример объявления класса Первым будет выполнен статический инициализатор (при загрузке класса в JVM) Не статические инициализаторы будут выполнены при создании объекта в порядке объявления

Слайд 6





Классы и наследование
Java не поддерживает множественного наследования классов
Членами класса являются унаследованные и определенные в классе члены
Вновь объявленные поля могут скрывать поля суперклассов и суперинтерфейсов
Вновь объявленные методы могут скрывать, реализовывать или перегружать методы, объявленные в суперклассе или суперинтерфейсе
Вложенные классы бывают статическими и внутренними (inner), в зависимости от контекста в котором они объявлены (если в точке объявления имеет смысл ссылка this – то вложенный класс будет внутренним)
Описание слайда:
Классы и наследование Java не поддерживает множественного наследования классов Членами класса являются унаследованные и определенные в классе члены Вновь объявленные поля могут скрывать поля суперклассов и суперинтерфейсов Вновь объявленные методы могут скрывать, реализовывать или перегружать методы, объявленные в суперклассе или суперинтерфейсе Вложенные классы бывают статическими и внутренними (inner), в зависимости от контекста в котором они объявлены (если в точке объявления имеет смысл ссылка this – то вложенный класс будет внутренним)

Слайд 7





Интерфейсы
Определяют контракт, не зависящий от конкретной реализации
В объявлении используется ключевое слово interface
Класс может реализовывать до 65 535 интерфейсов 
Реализацией нескольких интерфейсов можно эмулировать множественное наследования контрактов (поведения), но не состояния
Описание слайда:
Интерфейсы Определяют контракт, не зависящий от конкретной реализации В объявлении используется ключевое слово interface Класс может реализовывать до 65 535 интерфейсов Реализацией нескольких интерфейсов можно эмулировать множественное наследования контрактов (поведения), но не состояния

Слайд 8





Интерфейсы (Java 8)
Могут определять методы по умолчанию (default interface methods)
interface Formula { 
	double calculate(int a); 
	default double sqrt(int a) { 
		return Math.sqrt(a); } 
}  
Классы, имплементирующие этот интерфейс, должны переопределить только абстрактный метод calculate. Метод по умолчанию sqrt будет доступен без переопределения.

Formula formula = new Formula() { 
	@Override public double calculate(int a) { 
		return sqrt(a * 100); } 
}; 
formula.calculate(100); // 100.0 
formula.sqrt(16); // 4.0
Описание слайда:
Интерфейсы (Java 8) Могут определять методы по умолчанию (default interface methods) interface Formula { double calculate(int a); default double sqrt(int a) { return Math.sqrt(a); } } Классы, имплементирующие этот интерфейс, должны переопределить только абстрактный метод calculate. Метод по умолчанию sqrt будет доступен без переопределения. Formula formula = new Formula() { @Override public double calculate(int a) { return sqrt(a * 100); } }; formula.calculate(100); // 100.0 formula.sqrt(16); // 4.0

Слайд 9





Абстрактный класс
Класс C является абстрактным, если выполняется хотя бы одно из следующих условий:
Класс C явно содержит объявление абстрактного метода
Какой-либо класс-родитель C содержит объявление абстрактного метода, который не был реализован в классе C или в его родительских классах
Один из интерфейсов C определяет или наследует метод, который не реализован (и поэтому  является абстрактным), т.е. ни C ни его родительские классы не определяют реализацию этого метода
Класс С объявлен с модификатором abstract
Экземпляр абстрактного класса создать нельзя
Суть абстрактного класса в частичной реализации требуемого поведения. Остальное предстоит реализовать подклассам
Иногда классы делают абстрактными чтобы запретить создание экземпляров.
Описание слайда:
Абстрактный класс Класс C является абстрактным, если выполняется хотя бы одно из следующих условий: Класс C явно содержит объявление абстрактного метода Какой-либо класс-родитель C содержит объявление абстрактного метода, который не был реализован в классе C или в его родительских классах Один из интерфейсов C определяет или наследует метод, который не реализован (и поэтому является абстрактным), т.е. ни C ни его родительские классы не определяют реализацию этого метода Класс С объявлен с модификатором abstract Экземпляр абстрактного класса создать нельзя Суть абстрактного класса в частичной реализации требуемого поведения. Остальное предстоит реализовать подклассам Иногда классы делают абстрактными чтобы запретить создание экземпляров.

Слайд 10





Классы и полиморфизм
Полиморфизм – вариация поведения в зависимости от конкретной реализации в рамках единого контракта 
Все методы в Java потенциально являются виртуальными
Тем не менее, полиморфный вызов будет происходить не всегда
Private-методы не полиморфны
Static-методы не полиморфны
Final-методы не полиморфны
Хотя неполиморфный вызов в теории производительнее полиморфного, не нужно пытаться подсказывать JVM, что метод не полиморфен при помощи модификаторов
Полиморфизм позволяет абстрагироваться от деталей реализации и работать с объектом как с «черным ящиком»
Описание слайда:
Классы и полиморфизм Полиморфизм – вариация поведения в зависимости от конкретной реализации в рамках единого контракта Все методы в Java потенциально являются виртуальными Тем не менее, полиморфный вызов будет происходить не всегда Private-методы не полиморфны Static-методы не полиморфны Final-методы не полиморфны Хотя неполиморфный вызов в теории производительнее полиморфного, не нужно пытаться подсказывать JVM, что метод не полиморфен при помощи модификаторов Полиморфизм позволяет абстрагироваться от деталей реализации и работать с объектом как с «черным ящиком»

Слайд 11





Перегрузка методов (Overriding)
Перегрузка методов экземпляра позволяет создать условия для полиморфного вызова
При перегрузке метода можно изменять объявление метода в пределах, не нарушающих исходного контракта
Возвращаемое значение может стать более конкретным
Тип параметра может стать более общим
Объявленное в заголовке исключение может быть опущено
Область видимости может быть расширена
Общее правило – перегруженный метод можно использовать вместо исходной версии без ошибок компиляции
Аннотация @Override позволяет на этапе компиляции проверить правильность перегрузки методов
Описание слайда:
Перегрузка методов (Overriding) Перегрузка методов экземпляра позволяет создать условия для полиморфного вызова При перегрузке метода можно изменять объявление метода в пределах, не нарушающих исходного контракта Возвращаемое значение может стать более конкретным Тип параметра может стать более общим Объявленное в заголовке исключение может быть опущено Область видимости может быть расширена Общее правило – перегруженный метод можно использовать вместо исходной версии без ошибок компиляции Аннотация @Override позволяет на этапе компиляции проверить правильность перегрузки методов

Слайд 12





Полиморфизм: пример
Описание слайда:
Полиморфизм: пример

Слайд 13





Модификаторы объявления класса
public – класс доступен извне пакета. 
abstract – класс является абстрактным (в нем есть абстрактные методы)
final – класс является конечным в иерархии наследования. От него нельзя унаследовать другой класс
strictfp – для всех методов класса действуют правила строгой проверки арифметических выражений во время вычислений
Для вложенных(внутренних) классов дополнительно действуют следующие модификаторы:
static – класс является статическим (вложенный класс)
protected – к классу имеют доступ только классы наследники объемлющего класса или классы в том же пакете
private – к классу имеет доступ только объемлющий класс
Описание слайда:
Модификаторы объявления класса public – класс доступен извне пакета. abstract – класс является абстрактным (в нем есть абстрактные методы) final – класс является конечным в иерархии наследования. От него нельзя унаследовать другой класс strictfp – для всех методов класса действуют правила строгой проверки арифметических выражений во время вычислений Для вложенных(внутренних) классов дополнительно действуют следующие модификаторы: static – класс является статическим (вложенный класс) protected – к классу имеют доступ только классы наследники объемлющего класса или классы в том же пакете private – к классу имеет доступ только объемлющий класс

Слайд 14





Модификаторы static и final
Описание слайда:
Модификаторы static и final

Слайд 15





Final-поля
Переменные классов (static) и переменные экземпляров могут быть объявлены final 
Статическая переменная, объявленная final должна быть инициализирована непосредственно при объявлении либо в блоке статической инициализации
Переменная экземпляра (не static), объявленная final должна быть проинициализирована непосредственно при объявлении либо в блоке инициализации, либо ей должно быть присвоено значение к концу исполнения каждого конструктора
Final-переменная после инициализации не может изменить своего значения. Единственный способ изменить его искусственно – использовать Reflection API
Описание слайда:
Final-поля Переменные классов (static) и переменные экземпляров могут быть объявлены final Статическая переменная, объявленная final должна быть инициализирована непосредственно при объявлении либо в блоке статической инициализации Переменная экземпляра (не static), объявленная final должна быть проинициализирована непосредственно при объявлении либо в блоке инициализации, либо ей должно быть присвоено значение к концу исполнения каждого конструктора Final-переменная после инициализации не может изменить своего значения. Единственный способ изменить его искусственно – использовать Reflection API

Слайд 16





Final-поля: пример
Переменная ,объявленная final, может быть проинициализирована ровно один раз, после этого ее значение изменить нельзя.
Описание слайда:
Final-поля: пример Переменная ,объявленная final, может быть проинициализирована ровно один раз, после этого ее значение изменить нельзя.

Слайд 17





Static
Статические поля и методы являются атрибутами класса, а не объекта
Все экземпляры класса (объекты) будут работать с одним и тем же статическим полем 
Комбинация модификаторов static final по сути означает объявление константы
В статических методах ссылки this и super будут недоступны – в контексте нет объекта
Из static-методов можно оперировать только static-полями
Обращение к статическим членам класса происходит через точку с указанием класса, а не конкретного объекта. 
Последний вариант, впрочем, технически возможен, но считается плохим стилем программирования
Описание слайда:
Static Статические поля и методы являются атрибутами класса, а не объекта Все экземпляры класса (объекты) будут работать с одним и тем же статическим полем Комбинация модификаторов static final по сути означает объявление константы В статических методах ссылки this и super будут недоступны – в контексте нет объекта Из static-методов можно оперировать только static-полями Обращение к статическим членам класса происходит через точку с указанием класса, а не конкретного объекта. Последний вариант, впрочем, технически возможен, но считается плохим стилем программирования

Слайд 18





Пример static-поля
Описание слайда:
Пример static-поля

Слайд 19





Члены классов
Описание слайда:
Члены классов

Слайд 20





Конструкторы и инициализаторы
Инициализаторы экземпляра – блоки кода {…} выполняемые  при инициализации объекта. Выполняются перед вызовом конструктора. 
Статические инициализаторы – статические блоки кода static {…} выполняемые при загрузке класса JVM перед первым использованием
Конструкторы, в отличие от методов, не могут быть вызваны непосредственно с помощью вызова через точку. Конструкторы вызываются при создании объектов и могут быть перегружены
Описание слайда:
Конструкторы и инициализаторы Инициализаторы экземпляра – блоки кода {…} выполняемые при инициализации объекта. Выполняются перед вызовом конструктора. Статические инициализаторы – статические блоки кода static {…} выполняемые при загрузке класса JVM перед первым использованием Конструкторы, в отличие от методов, не могут быть вызваны непосредственно с помощью вызова через точку. Конструкторы вызываются при создании объектов и могут быть перегружены

Слайд 21





Методы
Методы описывают участки кода, которые могут быть вызваны с помощью выражения вызова метода
Метод класса исполняется в контексте переменных класса (static context)
Метод экземпляра исполняется в контексте конкретного объекта, доступного по this
Методы не имеющие реализации должны быть объявлены abstract
Допускается перегрузка методов по списку и типам аргументов
Метод может иметь платформенно-зависимую реализацию (native method). В таких методах недоступен debug и просмотр исходного кода
Описание слайда:
Методы Методы описывают участки кода, которые могут быть вызваны с помощью выражения вызова метода Метод класса исполняется в контексте переменных класса (static context) Метод экземпляра исполняется в контексте конкретного объекта, доступного по this Методы не имеющие реализации должны быть объявлены abstract Допускается перегрузка методов по списку и типам аргументов Метод может иметь платформенно-зависимую реализацию (native method). В таких методах недоступен debug и просмотр исходного кода

Слайд 22





Параметры метода
Во время вызова метода вычисленные значения передаваемых аргументов используются для инициализации переменных-параметров метода
Таким образом всегда имеет место передача «по значению»
Область видимости параметра ограничивается методом, в котором он объявлен. При этом доступ к нему осуществляется с помощью обычного имени.
Параметры перекрывают собой поля-члены класса, в котором объявлен метод, содержащий эти параметры. Для доступа к перекрытым полям-членам нужно использовать this либо полное квалифицированное имя
Параметры типов double и float всегда содержат значения из множества double и float соответственно. Они не могут принимать расширенных значений появляющихся во время вычисления выражений не являющихся strictfp
Описание слайда:
Параметры метода Во время вызова метода вычисленные значения передаваемых аргументов используются для инициализации переменных-параметров метода Таким образом всегда имеет место передача «по значению» Область видимости параметра ограничивается методом, в котором он объявлен. При этом доступ к нему осуществляется с помощью обычного имени. Параметры перекрывают собой поля-члены класса, в котором объявлен метод, содержащий эти параметры. Для доступа к перекрытым полям-членам нужно использовать this либо полное квалифицированное имя Параметры типов double и float всегда содержат значения из множества double и float соответственно. Они не могут принимать расширенных значений появляющихся во время вычисления выражений не являющихся strictfp

Слайд 23





Поля в классах
Поля в классах могут иметь либо примитивный, либо ссылочный тип
Область видимости полей, в том числе по цепочке наследования, регулируется модификаторами доступа
При этом поля класса скрывают одноименные поля суперклассов. Для обращения к скрытым полям можно использовать нотацию вида super.fieldName;
При создании объекта (загрузке класса в случае статических полей) будет выполнена инициализация полей значениями по умолчанию.
В многопоточном окружении, тем не менее, возможна ситуация, в которой сторонний поток может получить не полностью сконструированный объект
Описание слайда:
Поля в классах Поля в классах могут иметь либо примитивный, либо ссылочный тип Область видимости полей, в том числе по цепочке наследования, регулируется модификаторами доступа При этом поля класса скрывают одноименные поля суперклассов. Для обращения к скрытым полям можно использовать нотацию вида super.fieldName; При создании объекта (загрузке класса в случае статических полей) будет выполнена инициализация полей значениями по умолчанию. В многопоточном окружении, тем не менее, возможна ситуация, в которой сторонний поток может получить не полностью сконструированный объект

Слайд 24





Поля в интерфейсах
Фактически все поля интерфейса являются public static final константами. Декларация данных спецификаторов является избыточной.
Каждое поле в теле интерфейса должно быть проинициализировано выражением, значение которого должно быть вычислено на стадии компиляции. При этом возможно использование в выражении уже проинициализированных полей самого интерфейса
Поля инициализируются в порядке их декларации за исключением полей, явно инициализируемых константами. 
В выражениях инициализации нельзя использовать ключевые слова this и super кроме случая если эти слова используются внутри декларации тела анонимного класса реализующего интерфейс.
Описание слайда:
Поля в интерфейсах Фактически все поля интерфейса являются public static final константами. Декларация данных спецификаторов является избыточной. Каждое поле в теле интерфейса должно быть проинициализировано выражением, значение которого должно быть вычислено на стадии компиляции. При этом возможно использование в выражении уже проинициализированных полей самого интерфейса Поля инициализируются в порядке их декларации за исключением полей, явно инициализируемых константами. В выражениях инициализации нельзя использовать ключевые слова this и super кроме случая если эти слова используются внутри декларации тела анонимного класса реализующего интерфейс.

Слайд 25





Внутренние классы
Описание слайда:
Внутренние классы

Слайд 26





Внутренние (inner) классы
Внутренний (inner) класс – это класс, определенный в контексте другого класса
Внутренние классы делятся на статические и нестатические
Статические вложенные классы, не имеют доступа к нестатическим полям и методам обрамляющего класса, так как статика соотносится к классом и не имеет отношения к любому из конкретных объектов
Объект нестатический внутреннего класс может быть создан только в контексте объекта внешнего класса и имеет одинаковый с ним жизненный цикл
Описание слайда:
Внутренние (inner) классы Внутренний (inner) класс – это класс, определенный в контексте другого класса Внутренние классы делятся на статические и нестатические Статические вложенные классы, не имеют доступа к нестатическим полям и методам обрамляющего класса, так как статика соотносится к классом и не имеет отношения к любому из конкретных объектов Объект нестатический внутреннего класс может быть создан только в контексте объекта внешнего класса и имеет одинаковый с ним жизненный цикл

Слайд 27





Нестатические внутренние классы
Применяются, в частности, для моделирования отношения  композиции
Могут быть нескольких видов
внутренние классы-члены (member inner classes). Объявляются в контексте класса
локальные классы (local classes). Объявляются внутри методов
анонимные классы (anonymous classes). Не имеют явного имени и, как правило, у такого класса создается единственный объект прямо в месте объявления
В результате компиляции из каждого из них будет создан отдельный .class-файл с префиксом из имени внешнего класса.
Описание слайда:
Нестатические внутренние классы Применяются, в частности, для моделирования отношения композиции Могут быть нескольких видов внутренние классы-члены (member inner classes). Объявляются в контексте класса локальные классы (local classes). Объявляются внутри методов анонимные классы (anonymous classes). Не имеют явного имени и, как правило, у такого класса создается единственный объект прямо в месте объявления В результате компиляции из каждого из них будет создан отдельный .class-файл с префиксом из имени внешнего класса.

Слайд 28





Пример нестатического внутреннего класса
Описание слайда:
Пример нестатического внутреннего класса

Слайд 29





Пример локального внутреннего класса
Описание слайда:
Пример локального внутреннего класса

Слайд 30





Пример анонимной реализации интерфейса
Аналогичным образом можно оформлять анонимное наследование от конкретных классов
Описание слайда:
Пример анонимной реализации интерфейса Аналогичным образом можно оформлять анонимное наследование от конкретных классов

Слайд 31





Инициализация
Описание слайда:
Инициализация

Слайд 32





Инициализация полей
Инициализация полей экземпляра происходит каждый раз при создании нового объекта.
Инициализация статических полей класса происходит один раз при первом использовании класса.
При инициализации поля экземпляра могут использовать статические поля, т.к. они гарантированно инициализированы к моменту создания объекта
При инициализации статические поля класса не могут использовать поля экземпляра, а также ключевые слова this и super
Инициализация полей происходит в порядке объявления и в порядке исполнения блоков инициализации. Код конструкторов исполняется в последнюю очередь
Описание слайда:
Инициализация полей Инициализация полей экземпляра происходит каждый раз при создании нового объекта. Инициализация статических полей класса происходит один раз при первом использовании класса. При инициализации поля экземпляра могут использовать статические поля, т.к. они гарантированно инициализированы к моменту создания объекта При инициализации статические поля класса не могут использовать поля экземпляра, а также ключевые слова this и super Инициализация полей происходит в порядке объявления и в порядке исполнения блоков инициализации. Код конструкторов исполняется в последнюю очередь

Слайд 33





Overloading, Overriding и Hiding
Описание слайда:
Overloading, Overriding и Hiding

Слайд 34





Перечислимые типы
Описание слайда:
Перечислимые типы

Слайд 35





Перечисления (enum)
В отличие от статических констант, предоставляют типизированный, безопасный способ задания фиксированных наборов значений
Являются классами специального вида, не могут иметь наследников, сами в свою очередь наследуются от java.lang.Enum. Не могут быть абстрактными и содержать абстрактные методы, но могут реализовывать интерфейсы
Экземпляры объектов перечисления нельзя создать с помощью new, каждый объект перечисления уникален, создается при загрузке перечисления в виртуальную машину, поэтому допустимо сравнение ссылок для объектов перечислений, можно использовать switch
Как и обычные классы могут реализовывать поведение, содержать вложенные и внутренние классы-члены
Описание слайда:
Перечисления (enum) В отличие от статических констант, предоставляют типизированный, безопасный способ задания фиксированных наборов значений Являются классами специального вида, не могут иметь наследников, сами в свою очередь наследуются от java.lang.Enum. Не могут быть абстрактными и содержать абстрактные методы, но могут реализовывать интерфейсы Экземпляры объектов перечисления нельзя создать с помощью new, каждый объект перечисления уникален, создается при загрузке перечисления в виртуальную машину, поэтому допустимо сравнение ссылок для объектов перечислений, можно использовать switch Как и обычные классы могут реализовывать поведение, содержать вложенные и внутренние классы-члены

Слайд 36





Пример
Описание слайда:
Пример

Слайд 37





Enum API
Каждый класс перечисления неявно содержит следующие методы:
values() -  возвращает массив элементов перечисления (статический метод)
ordinal() -  возвращает порядковый номер элемента перечисления (в порядке декларации)
valueOf(String name) – возвращает элемент перечисления по его строковому имени (статический метод, выбрасывает IllegalArgumentException если нет элемента с указанным именем)
Класс перечисления может иметь конструктор (private либо package), который вызывается для каждого элемента при его декларации
Отдельные элементы перечисления могут реализовывать свое собственное поведение
Описание слайда:
Enum API Каждый класс перечисления неявно содержит следующие методы: values() - возвращает массив элементов перечисления (статический метод) ordinal() - возвращает порядковый номер элемента перечисления (в порядке декларации) valueOf(String name) – возвращает элемент перечисления по его строковому имени (статический метод, выбрасывает IllegalArgumentException если нет элемента с указанным именем) Класс перечисления может иметь конструктор (private либо package), который вызывается для каждого элемента при его декларации Отдельные элементы перечисления могут реализовывать свое собственное поведение

Слайд 38





Пример более сложного enum
Описание слайда:
Пример более сложного enum

Слайд 39





Пакеты и import
Описание слайда:
Пакеты и import

Слайд 40





Пакеты
В типичном случае программа состоит из нескольких пакетов
Каждый пакет имеет собственное пространство имен для типов объявленных в пакете
Тип  доступен извне пакета только если он объявлен с модификатором public
Пакеты образуют иерархическую структуру имен.
Членами пакета являются:
Классы, интерфейсы, enum, объявленные в пакете
подпакеты, которые имеют свои собственные подпакеты и классы
Пакеты имеют ряд ограничений на их организацию для обеспечения однозначности при поиске и загрузке (а также компиляции) типов
Описание слайда:
Пакеты В типичном случае программа состоит из нескольких пакетов Каждый пакет имеет собственное пространство имен для типов объявленных в пакете Тип доступен извне пакета только если он объявлен с модификатором public Пакеты образуют иерархическую структуру имен. Членами пакета являются: Классы, интерфейсы, enum, объявленные в пакете подпакеты, которые имеют свои собственные подпакеты и классы Пакеты имеют ряд ограничений на их организацию для обеспечения однозначности при поиске и загрузке (а также компиляции) типов

Слайд 41





Пакеты: файловая структура
При отображении (хранении) на файловой системе один файл может содержать только один тип объявленный public совпадающий по имени с именем файла
Описание слайда:
Пакеты: файловая структура При отображении (хранении) на файловой системе один файл может содержать только один тип объявленный public совпадающий по имени с именем файла

Слайд 42





Декларация import
Для того чтобы получить доступ к членам другого пакета (кроме java.lang) в классе, нужно явно импортировать эти члены. По умолчанию они не видны
import java.io.InputStream; // single type import declaration
import java.net.*;                   // import on demand declaration
Будучи импортированными типы становятся доступны в единице компиляции с использованием простого (не квалифицированного) имени.
Вопреки распространенному мнению лишние импорты не приводят к автоматической загрузке классов или любой другой напрасной трате ресурсов. JVM загружает класс по факту использования, а не импортирования
Описание слайда:
Декларация import Для того чтобы получить доступ к членам другого пакета (кроме java.lang) в классе, нужно явно импортировать эти члены. По умолчанию они не видны import java.io.InputStream; // single type import declaration import java.net.*; // import on demand declaration Будучи импортированными типы становятся доступны в единице компиляции с использованием простого (не квалифицированного) имени. Вопреки распространенному мнению лишние импорты не приводят к автоматической загрузке классов или любой другой напрасной трате ресурсов. JVM загружает класс по факту использования, а не импортирования

Слайд 43





Статический импорт
Для того чтобы иметь возможность обращаться к статическим методам, полям класса, а также к элементам перечислений без использования квалифицированного имени, можно воспользоваться статической декларацией импорта:
import static Days.* ;
import static java.lang.Math.*;
…
Day d = MONDAY;
Day d2 = valueOf(“SATURDAY”);
double v = sin(PI/2);
Однако злоупотреблять статическим импортом не стоит
Описание слайда:
Статический импорт Для того чтобы иметь возможность обращаться к статическим методам, полям класса, а также к элементам перечислений без использования квалифицированного имени, можно воспользоваться статической декларацией импорта: import static Days.* ; import static java.lang.Math.*; … Day d = MONDAY; Day d2 = valueOf(“SATURDAY”); double v = sin(PI/2); Однако злоупотреблять статическим импортом не стоит

Слайд 44





Правила именования пакетов
Для обеспечения уникальности имени пакета в качестве основы следует использовать доменное имя организации, например: ru.nsu.fit.mylastname.task1
Примеры имен:
com.sun.java.jag.scrabble 
com.apple.quicktime.v2 
com.novosoft.siberon.someproject
Описание слайда:
Правила именования пакетов Для обеспечения уникальности имени пакета в качестве основы следует использовать доменное имя организации, например: ru.nsu.fit.mylastname.task1 Примеры имен: com.sun.java.jag.scrabble com.apple.quicktime.v2 com.novosoft.siberon.someproject

Слайд 45


Java SE 5. ООП в Java. Основные понятия, слайд №45
Описание слайда:

Слайд 46


Java SE 5. ООП в Java. Основные понятия, слайд №46
Описание слайда:



Похожие презентации
Mypresentation.ru
Загрузить презентацию