ООП Flashcards Preview

Java > ООП > Flashcards

Flashcards in ООП Deck (52)
Loading flashcards...
1

ООП

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

2

класс

описание структуры данных

3

правильно организовать доступ к полям класса?

private. Доступ через методы get\set.

4

конструктор

метод вызываемый при создании обьекта

5

Чем отличаются конструкторы по-умолчанию, копирования и конструктор с параметрами?

Конструктор по умолчанию не принимает никаких параметров. Конструктор копирования принимает в качестве параметра объект класса. Конструктор с параметрами принимает на вход параметры (обычно необходимые для инициализации полей класса).

6

модификации уровня доступа

private в пределах класса.
default, в пределах пакета
protected доступ в пределах пакета и классов наследников.
public доступ для всех из любого другого кода проекта

7

Расскажите об особенностях класса с единственным закрытым (private) конструктором.

Невозможно создать объект класса у которого единственный private конструктор за пределами класса. Поэтому нельзя унаследоваться от такого класса. При попытке унаследоваться будет выдаваться ошибка: There is no default constructor available in имяКласса. А при попытке создать объект этого класса: ИмяКласса() has private access in ИмяКласса

8

О чем говорят ключевые слова “this”, “super”, где и как их можно использовать?

super — используется для обращения к базовому классу, а this к текущему.

9

Дайте определение понятию “метод”.

Метод — это последовательность команд, которые вызываются по определенному имени. Можно сказать что это функция и процедура (в случае void метода).

10

сигнатура метода?

имя метода плюс параметры (причем порядок параметров имеет значение).
В сигнатуру метода не входит возвращаемое значение, бросаемые им исключения, а также модификаторы.

11

Модификаторы метода

Ключевые слова public, protected, private, abstract, static, final, synchronized, native, strictfp в т.ч. аннотации для метода — это модификаторы и не являются частью сигнатуры.

12

Какие методы называются перегруженными?

с одинаковыми именами, но разными сигнатурами.

13

Могут ли нестатические методы перегрузить статические?

Да. Это будут просто два разных метода для программы. Статический будет доступен по имени класса.

14

Могут ли быть переопределены статические методы?

Переопределить базовый статический метод нельзя

15

Может ли метод принимать разное количество параметров (аргументы переменной длины)?

Да. массив:
public void method (String ... strings) {
for (String s : strings) {
}
}

16

Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода?

При переопределении метода нельзя сузить модификатор доступа к методу. нельзя Изменить тип возвращаемого значения . Но можно сузить возвращаемое значение, если они совместимы. Например:

17

Как получить доступ к переопределенным методам родительского класса?

super.method();

18

Чем отличается переопределение от перегрузки?

Переопределение - изменение существующего метода. Перегрузка — это использование одного имени, но с разными входными параметрами.

19

instanceof

возвращает true, если объект является экземпляром класса или его потомком.

20

блоки инициализации?

наборы выражений инициализации полей, заключенные в фигурные скобки и размещаемые внутри класса вне объявлений методов или конструкторов. Блок инициализации выполняется так же, как если бы он был расположен в верхней части тела любого конструктора. Бывают статические и нестатические блоки инициализации. Так же возможно создать такой блок в анонимном классе.
Пример статического
class Foo {
static List abc;
static {
abc = new LinkedList();
for (char c = 'A'; c <= 'Z'; ++c) {
abc.add( c );
}
}
}

//Пример инициализации в анонимном классе
JFrame frame = new JFrame() {{
add(new JPanel() {{
add(new JLabel("Хабрахабр?") {{
setBackground(Color.BLACK);
setForeground(Color.WHITE);
}});
}});
}};

21

Каков порядок вызова конструкторов и блоков инициализации двух классов: потомка и его предка?

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

22

модификатор abstract

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

23

Можно ли объявить метод абстрактным и статическим одновременно?

Нет. abstract говорит, что метод будет реализован в другом классе, а static наоборот указывает, что этот метод будет доступен по имени класса.

24

ключевое поле static

Модификатор static говорит о том, что метод или поле класса принадлежат не объекту, а классу.
На методы, объявленные как static, накладывается ряд ограничений.

Они могут вызывать только другие статические методы.
Они должны осуществлять доступ только к статическим переменным.
Они не могут ссылаться на члены типа this или super.

25

Можно ли перегрузить static метод?

Перегрузить можно, но переопределить нельзя.

26

статический класс, какие особенности его использования?

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

27

Какие особенности инициализации final static переменных?

Переменные должны быть инициализированы во время объявления или в static блоке.

28

Как влияет модификатор static на класс/метод/поле?

Модификатор static говорит о том, что метод или поле класса принадлежат не объекту, а классу.

Внутри static метода нельзя вызвать не статический метод по имени класса.

Про static класс смотрите ответ выше.

29

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

Для класса. Класс помеченный при помощи final не может иметь наследников.
Для метода. Метод помеченный при помощи final не может быть переопределен в классах наследниках.
Для поля. Поле помеченное при помощи слова final не может изменить свое значение после инициализации (инициализируется либо при описании, либо в конструкторе, статическом или динамическом блоке).
Значение локальных переменных, а так же параметров метода помеченных при помощи слова final не могут быть изменены после присвоения.

30

Дайте определение понятию “интерфейс”.

Ключевое слово interface используется для создания полностью абстрактных классов. Создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений, но не тела методов.

Наличие слова interface означает, что именно так должны выглядеть все классы, которые реализуют данный интерфейс. Таким образом, любой код, использующий конкретный интерфейс, знает только то, какие методы вызываются для этого интерфейса, но не более того.