Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_k_ekzamenu_po_programmirovaniyu_1_semest....docx
Скачиваний:
24
Добавлен:
04.12.2018
Размер:
94.85 Кб
Скачать

49. Назначение и форма статических инициализаторов

Любые статические инициализаторы, объявленные в классе, реализуются, когда класс инициализируется и для переменных класса вместе с некоторым полем инициализаторов (§8.3.2) , может использоваться, чтобы инициализировать переменные класса (§12.4).

StaticInitializer:

static Block

Ошибка времени компиляции происходит, если статический инициализатор завершаться преждевременно (§14.1, §15.5) с проверенным исключением (§11.2).

Статические инициализаторы и переменная инициализации класса выполнены в текстовом порядке и не могут обращаться к переменным класса, объявленным в классе, чье объявление появляется в тексте после использования, даже при том, что эти переменные класса находятся в области видимости. Это ограничение предназначено замку, во время компиляции, зациклившейся или неправильной инициализации. Таким образом, для следующих кодов:

class Z {

static int i = j + 2;

static int j = 4;

}

и:

class Z {

static { i = j + 2; }

static int i, j;

static { j = 4; }

}

результатом будет ошибка времени компиляции.

50. Понятие инкапсуляции.

Основой инкапсуляции в Java является класс. Класс определяет данные и код некоторого набора объектов. Объект является экземпляром класса. Таким образом, класс - это логическая конструкция, а объект – физическая реальность.

При составлении класса код и данные необходимо специфицировать. Все эти элементы называют членами класса. Члены-переменные или переменные экземпляра являются данными. Члены методы или просто методы – код, оперирующий этими данными.

Цель класса – инкапсуляция сложности. Для этого у методов и переменных внутри класса могут быть модификаторы доступа (public, private).

Инкапсуляция означает, что данные объекта недоступны его клиентам непосредственно. Вместо этого они инкапсулируются — скрываются от прямого доступа извне. Инкапсуляция предохраняет данные объекта от нежелательного доступа, позволяя объекту самому управлять доступом к своим данным.

Модификаторы доступа Модификаторы доступа можно рассматривать как с позиции инкапсуляции так и наследования. Если рассматривать с позиции инкапсуляции, то модификаторы доступа позволяют ограничить нежелательный доступ к членам класса извне. 

51. Правила передачи параметров в методы

Передача по ссылке подразумевает передачу ссылки на объект. В этом случае реализация метода потенциально может модифицировать переданный объект (например, вызвав метод, изменяющий состояние объекта). В случае передачи по значению параметр копируется. Изменение параметра не будет заметно на вызывающей стороне. В Java объекты всегда передаются по ссылке, а примитивы - по значению Pass By Reference means the passing the address itself rather than passing the value. Pass By Value means passing a copy of the value to be passed.

52. Понятие полиморфизма. Объяснение полиморфизма на примере базового класса и нескольких его наследников.

Полиморфизм - третья неотъемлемая часть объектно-ориентированного программирования, после абстракции и наследования соответственно. 

Полиморфизм предоставляет другое измерение разделения интерфейса и реализации, т.е. отделяет что от как. Полиморфизм позволяет повысить возможности по организации кода и читабельность исходных текстов, так же, как создание расширяемых программ, которые могут расти не только во время их создания, но и после, когда к ним нужно добавить новую требуемую возможность.

  1. Наследование (в Java) - возможность создать класс (интерфейс) наследник получающий (наследующий) от родительского класса (и/или интерфейса) доступные (для наследования) поля и методы 2. Полиморфизм - возможность переопределить в классе наследнике унаследованные методы

Полиморфизм в Java позволяет повысить возможности по организации кода и читабельность исходных текстов, облегчить создание расширяемых программ, предполагающих дальнейшее наращивание функциональности.