Часть 1 Flashcards

1
Q

3 принципа ООП

A

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

ещё абстракция
нихрена не понял

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Где можно инициализировать статические или нестатические поля

A

Статические поля можно инициализировать во вермя объявления, в статическом или динамическом блоке инициализации.

Нестатические можно инициализировать в динамическом блоке инициализации, во время объявления, в конструкторе.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

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

A

Метод который вызывается при создании объекта и инициализирует его.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

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

A

Это как функция внутри класса (если возвращает void то процедура)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Дайте определение понятию класс

A

Ну схема по которой создаются объекты
Описание структуры объекта

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

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

A

super.method()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

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

A

Объявить поля как private
Доступ организовать с помощью геттеров сеттеров

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

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

A

Это методы с одинаковыми названиями которые принимают разные типы параметров

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Какие модификации уровня доступа вы знаете, расскажите про каждый из них.

A
  • public - доступно всем
  • private - только этому классу
  • без модификатора - доступен внутри

собственного пакета

  • protected - этому классу и потомкам(в том числе потомкам в других пакетах)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Какие преобразования называются нисходящими и восходящими

A

upcasting - восходящее преобразование (от подкласса внизу к суперклассу вверху иерархии)
Animal lol = new Cat();

downcasting - нисходящее преобразование.
Оно автоматически не выполняется
надо использовать кастинг
Object x = new Animal;
Animal y = (Animal)x;
вот ещё пример
int x = 100;
byte y = (byte) x

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

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

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

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

A

Да.
Это не тоже самое что перегруз.
Запись имеет видmethod(type … val)
Например:
public void method (String … strings) {
for (String s : strings) {
}
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

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

A

Нельзя сузить модификатор доступа
Но можно расширить
Нельзя изменить возвращаемый тип
Но можно сузить возвращаемый тип

Типа в таком случае наследование будет работать
Если например код использут базовый тип и вызывает этот метод то конкретный тип подойдёт так как он возвращает подходящий тип. Типичная ситуация.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

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

A

this - указывает на текущий класс
super - на базовый (ты можешь даже вызывать функции базового класса)
this() - вызов конструктора текущего класса
super() - ты понял не тупой

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Поле атрибут класса это

A

Переменная которая хранит какую-то характеристику объекта

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

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

A
  • Нельзя создать экземпляр
  • Нельзя создать потомков
17
Q

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

A

Переопределить базовый статический метод НЕЛЬЗЯ.

Насколько я понимаю переопределение это override.
Один класс может унаследовать метод от класса родителя и переопределить его.

Я не вижу проблем с переопределением статических методов. Однако этого делать нельзя.
ХОТЯ
Всё таки можно
объявить в дочернем классе static метод с такой же сигнатурой. Но это не @Override (переопределение) а это shadowing (перекрытие)
и там внутри нельзя использовать слово супер.

Короче ничего не понял спросить надо.

18
Q

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

A

Переопределить (override) метод можно при её наследовании.
Перегрузить (overload) можно добавив ещё один метод с таким же названием, но другим набором параметров.

19
Q

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

A

Конструктор по умолчанию не принимает никаких значений и вписывает в поля стандартные значения

Конструктор с параметрами принимает параметры и вписывает значения в поля

Конструктор копирования принимает объект того же класса и копирует его

20
Q

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

A

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

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