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

Какие существуют модификаторы доступа?

Для описания ограничений доступа используются ключевые слова public , private , protected . Они являются опциональными описателями и дают нам три варианта ограничений доступа плюс четвертый вариант, если не указан не один из этих описателей.

  • public — означает, что данный элемент доступен без каких-либо ограничений;

  • private — доступ разрешен только из данного класса;

  • protected — доступ разрешен из данного класса и из всех классов-потомков, а также из всех классов данного пакета.

  • без описателя — доступ разрешен из всех классов данного пакета.

Для классов применим только один описатель — public. Кроме того, классы могут не иметь никакого описателя ограничения доступа.

Для полей и методов применимы все 4 варианта ограничения доступа.

О чем говорит ключевое слово final?

В Java есть ключевое слово final - описатель полей, переменных, параметров и методов, которое означает, что их значение не может быть изменено. Поле или переменная с описателем final должны получить значение при описании, параметр просто не может быть изменен внутри тела метода. Также, это слово может применяться к классам. Это означает, что данный класс не может быть унаследован другим классом.

final double pi = 3.14;

Описатель final в сочетании с описателем static позволяют создать константы, т.е. поля, неизменные во всей программе. Так pi логичнее было бы описать так.

static final double pi = 3.14;

Что вы знаете о функции main()?

Метод main() — точка входа в программу. В приложении может быть несколько таких методов. Если метод отсутствует, то компиляция возможна, но при запуске будет получена ошибка `Error: Main method not found`.

public static void main(String[] args) {}

Какие логические операции и операторы вы знаете?

  • &: Логическое AND (И);

  • &&: Сокращённое AND;

  • |: Логическое OR (ИЛИ);

  • ||: Сокращённое OR;

  • ^: Логическое XOR (исключающее OR (ИЛИ));

  • !: Логическое унарное NOT (НЕ);

  • &=: AND с присваиванием;

  • |=: OR с присваиванием;

  • ^=: XOR с присваиванием;

  • ==: Равно;

  • !=: Не равно;

  • ?:: Тернарный (троичный) условный оператор.

Что такое тернарный оператор выбора?

Тернарный условный оператор ?: - оператор, которым можно заменить некоторые конструкции операторов if-then-else.

Выражение записывается в следующей форме:

условие ? выражение1 : выражение2

Если условие выполняется, то вычисляется выражение1 и его результат становится результатом выполнения всего оператора. Если же условие равно false, то вычисляется выражение2 и его значение становится результатом работы оператора. Оба операнда выражение1 и выражение2 должны возвращать значение одинакового (или совместимого) типа.

Где и для чего используется модификатор abstract?

Класс может представлять собой как бы заготовку или шаблон, в которой часть методов реализована, а часть — нет. В этом случае в описании класса перед словом class должен стоять описатель abstract. Наследниками абстрактного класса могут быть как другие абстрактные классы, так и классы, допускающие создание объектов. Абстрактный класс не может использоваться непосредственно для порождения объектов. Для этого необходимо, используя этот класс как базовый, породить другой класс, в котором нужно определить все абстрактные методы. Тогда можно будет создавать объекты.

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

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