- •Объектно-ориентированное программирование (общие сведения).
- •Атрибуты объекта в ооп.
- •Преимущества многократного использования кода, понятие модульности, ее реализация.
- •Возможности и назначение jvm.
- •Особенности проектирования программ в Java.
- •Объектная модель Java.
- •Пакет java.Lang.
- •Назначение и состав библиотек классов Java.
- •Особенности управления программами в Java.
- •Порядок выполнения программ в Java
- •Понятие превращения программ Java в исполняемый код.
- •Принцип инкапсуляции в java
- •Принцип наследования в Java
- •Понятие о классах в java
- •Реализация процедуры в java
- •Понтие функции в java
- •Возвращаемые значения в функциях.
- •Передача параметров в java.
- •Атрибуты класса
- •Способы создания и обработка массивов данных
- •Операторы прерывания программ, основные типы ошибок
- •Типы переменных в java
- •Особенности объявления переменных в java
- •Объявление массива данных в java
- •Логические операторы java
- •Операции и конструкции сравнения в java
- •Проектирование программ и состав модулей
- •Организация циклов в java
- •Понятие интерфейсов в java
- •Возможности java по работе с файлами
- •Потоки выполнения и синхронизация.
- •Виды встроенных классов.
- •Понятие коллекций, списков и итераторов.
- •Управление ходом выполнения программ.
- •Работа со стороками.
- •Сериализация объектов.
- •Создание объекта-исключения.
- •Использование модификаторов доступа.
- •Организация доступа к файлам.
- •Интерфейсы.
- •Основные отличия интерфейсов от классов.
- •Особенности наследования интерфейсов.
- •Базовые классы при работе с потомками выполнения в Java.
- •Базовые классы реализации ввода/вывода данных.
- •Объектные и ссылочные типы данных Java.
- •Понятие компиляции проекта в Java.
- •Способы создания модульного компонента в Java.
- •Работа "сборщика мусора".
- •Понятие преобразования типов в Java.
- •1. Виды преобразований
- •1.1. Расширяющие преобразования чисел
- •1.2. Сужающие преобразования чисел
- •1.3. Расширяющие преобразования ссылок
- •1.4. Сужающие преобразования ссылок
- •1.5. Преобразования в строки
- •1.6. Недопустимые преобразования
- •2. Контексты преобразований
- •2.1. Преобразование при присваивании
- •5.4.2.2. Преобразование аргументов метода
- •5.4.2.3. Преобразование в строку
- •5.4.2.4. Явное преобразование типа
- •5.4.3. Преобразования типов числовых операндов
1.4. Сужающие преобразования ссылок
Сужающие преобразования ссылок — это преобразования производных ссылочных типов в типы их потомков. Эти преобразования требуют проверки своей легитимности на этапе исполнения и могут генерировать исключение ClassCastException. Такими преобразованиями в Java являются:
преобразование любого класса в его потомка (в частности, преобразование типа Object в любой другой класс);
преобразование класса в интерфейс, когда класс не является финальным и не реализует данный интерфейс (в частности, преобразование типа Object в любой интерфейс);
преобразование типа Object в любой массив;
преобразование любого интерфейса в класс, который не является финальным;
преобразование любого интерфейса в класс, который является финальным и реализует данный интерфейс;
преобразование интерфейса J в интерфейс K, когда J не является потомком K, и не существует метода, декларированного и в J, и в K с одинаковой сигнатурой, но разными типами результата;
преобразование массива типа S[] в массив типа T[], если S и T — ссылочные типы, и преобразование S в T является сужающим.
1.5. Преобразования в строки
Любое выражение в Java, включая null, может быть преобразовано в тип String.
1.6. Недопустимые преобразования
Следующие преобразования типов в Java запрещены:
преобразование любого ссылочного типа в любой примитивный тип;
преобразование любого примитивного типа в любой ссылочной тип, кроме типа String;
преобразование нулевого типа в любой примитивный тип;
преобразования в нулевой тип или тип boolean;
преобразования типа boolean в любой другой тип, кроме типа String;
преобразование одного класса в другой, если ни один из них не является предком другого (кроме преобразования в тип String);
преобразование класса в интерфейс, если класс является финальным и не реализует данный интерфейс;
преобразование класса в массив, если класс отличен от Object;
преобразование интерфейс в класс, который является финальным и не реализует данный интерфейс (кроме преобразования в тип String);
преобразование интерфейса J в интерфейс K, если существует метод, декларированный и в J, и в K с одинаковой сигнатурой, но разными типами результата;
преобразование массива в класс, отличный от Object и String;
преобразование массива в интерфейс, отличный от Cloneable;
преобразование массива типа S[] в массив типа T[], если преобразование S в T является запрещенным
2. Контексты преобразований
2.1. Преобразование при присваивании
Преобразование при присваивании происходит, когда значение выражения присваивается переменной. При этом тип выражения преобразуется к типу переменной. При присваивании всегда возможны расширяющие преобразования типов (как числовых, так и ссылочных). Сужающее преобразование возможно только при соблюдении следующих условий:
переменная имеет тип byte, short или char;
значением выражения является константа типа int, которая попадает в диапазон возможных значений переменной.
Например, оператор byte x = 123; допустим, поскольку константа 123 (имеющая тип int) лежит в диапазоне допустимых значений типа byte.
Если тип выражения не может быть преобразован к типу переменной, то компилятор генерирует ошибку. В остальных случаях мы говорим, что тип выражения совместим по присваиванию с типом переменной. Так, следующий фрагмент
short s = 123;
char c = s; // генерирует ошибку компиляции
приведет к генерации ошибки, поскольку типы char и short несовместимы по присваиванию согласно данных выше определениям (первый реализован 16-битовыми словами без знака, а второй — со знаком).
