
- •1. История создания и развития Java.
- •2.Основные версии и продукты Java.
- •3.Методология процедурно-ориентированного программирования и объектно-ориентированного программирования
- •4. Объекты.
- •5. Типы отношений между классами.
- •6.Достоинства и недостатки ооп.
- •7. Работа с операторами.
- •8. Типы данных.
- •9.Имена. Простые и составные имена. Элементы
- •10.Пакеты. Элементы пакета. Платформенная поддержка пакетов. Уникальность имен пакетов.
- •11. Область видимости имен.
- •12.Соглашения по именованию.
- •13. Объявление классов.
- •14. Преобразование типов.
- •15. Объектная модель в Java.
- •16. Интерфейсы.
- •17.Полиморфизм.
- •18. Массивы как тип данных в Java. Преобразование типов для массивов.
- •19. Клонирование.
- •20. Исключения.
- •21. Управление циклами.
- •22. Обработка пользовательских событий.
- •23. Апплеты.
19. Клонирование.
Клонирование объекта бывает 2-х видов:
* Поверхностное (shadow);
* Глубокое (deep);
Ч
тобы
объект можно было клонировать, он должен
реализовывать интерфейс Сloneable (маркер).
Использование интерфейса влияет на
поведение метода (clone) родительского
класса (Object). Таким образом, вызов метода
MyType.clone() создаст новый представитель
типа MyType. Это будет shadow клонирование:
Глубокое клонирование подразумевает клонирование ссылочных полей (клонировать объекты, на которые они ссылаются ) объекта. Это делается вручную.
20. Исключения.
Каждый раз, когда при выполнении программы происходит ошибка, то программа выбрасывает исключение - в этот момент создается специальный объект-исключение (exception-object), дальше будем называть его просто исключение. Этот объект содержит информацию о возникшей ошибке: тип ошибки, а также запись о состоянии программы на момент возникновения ошибки. Создание исключения и передача его среде выполнения называется выбрасыванием исключения (exception throwing).
Во время выполнения первого метода возникла какая-то проблема, после этого было сгенерировано исключение. В момент генерации исключения Java начинает искать для него подходящий обработчик (handler), передавая объект вверх по стеку вызовов до тех пор, пока обработчик исключения не будет найден.
Т
ипы
исключений в Java
Как мы видим, все исключения имеют общего предка - Throwable. Он имеет два важных подкласса - Exception и Error. Исключения (Exceptions) являются результатом возникших внутри программы проблем, которые в принципе решаемы и предсказуемы. Ошибки (Errors) представляют собой более серьёзные проблемы, которые, согласно спецификации Java, не следует пытаться перехватить в приложении, написанном достаточно рационально (например ошибка OutOfMemoryError происходит в тех случаях, когда JVM не хватает памяти для выполнения программы). Кроме того, у Exception есть важный потомок - RuntimeException (исключение времени выполнения). Этот класс и его потомки представляют собой исключения, которые возникают во время "нормальной работы Java-машины" (примерами таких исключений являются попытки использования нулевых ссылок на объекты, деления на ноль или выход за границы массива).
В Java все исключения делятся на три типа: контролируемые исключения(checked), ошибки (Errors) и исключения времени выполнения (RuntimeExceptions) - последние два типа также объединяют в категорию неконтролируемых (unchecked) исключений. В чем различие? Все очень просто контролируемые исключения представляют собой те ошибки, которые могут быть обработаны в ходе выполнения программы, как вы уже догадались к этому типу относятся все потомки класса Exception (но не RuntimeException). Контролируемые исключения обязательны для обработки в коде программы, они должны быть обработаны либо включением в блок try-catch, либо объявлены в сигнатуре метода.
Неконтролируемые (unchecked) исключения не требуют обязательной обработки, поскольку представляют собой те ситуации, когда ошибка не зависит непосредственно от программиста (например произошёл сбой в аппаратном обеспечении), либо те, когда ошибку обрабатывать не имеет смысла, т.к. проще внести изменения в код - к ним относятся все потомки классов Error и RuntimeException.