Sem II (Program I) - N3 Flashcards

1
Q

Какую роль играет список параметров при перегрузке методов?

A

Список параметров важен для перегрузки методов, так как позволяет компилятору определить и вызвать правильный метод. Различное количество или типы данных параметров служат отличительным признаком.

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

Почему тип возвращаемого значения не входит в сигнатуру метода в Java?

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

Агрегация описывает отношение “имеет”, где объект имеет ссылку на другой объект (например, круг имеет точку). Наследование же - это отношение “является”, где класс наследует от другого класса и перенимает его свойства и методы.

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

Каковы типичные случаи применения параметров командной строки в методе main()?

A

Параметры командной строки используются для передачи значений Java-программе, которые могут управлять поведением программы

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

Что нужно учитывать при использовании varargs в методах?

A

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

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

Каковы преимущества использования агрегации в программировании?

A

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

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

Как достигается полиморфизм при использовании наследования в Java?

A

Полиморфизм достигается путём переопределения (Override) методов в производных классах. Метод производного класса вызывается даже если вызов метода происходит через ссылку базового класса. Это позволяет иметь различные реализации одного и того же метода для разных типов объектов.

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

В чем разница между агрегацией и композицией в объектно-ориентированном программировании?

A

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

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

Как реализуется наследование в Java и какова цель оператора super?

A

В Java наследование реализуется с помощью ключевого слова extends. Производный класс наследует свойства и методы базового класса. Оператор super используется для доступа к конструкторам и методам базового класса.

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

Когда метод в производном классе переопределяет метод базового класса, выполняется метод производного класса при его вызове. Тем не менее, доступ к методу базового класса возможен через super.имяМетода().

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

Почему композиция возможна в C++, но ограничена в Java?

A

В Java ограничение касается классов верхнего уровня. Внутри класса можно использовать композицию, однако Java не допускает множественного наследования на уровне классов, что возможно в C++.

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

Что понимается под инкапсуляцией в объектно-ориентированном программировании?

A

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

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

Какие существуют ограничения при наследовании конструкторов в Java?

A

Конструкторы в Java не наследуются. Каждый производный класс должен определять свои собственные конструкторы

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

Welche Begriffe werden für Basisklasse und abgeleitete Klasse verwendet?

A

Basisklasse wird auch als Superklasse oder Elternklasse bezeichnet, während die abgeleitete Klasse auch Subklasse, Unterklasse oder Kindklasse genannt wird.

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

Was wird von der Basisklasse an die abgeleitete Klasse vererbt?

A

(Fast) alle Instanzvariablen, Instanzmethoden, Klassenvariablen und Klassenmethoden. Eine Ausnahme sind Konstruktoren, die nicht vererbt werden.

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

В чём разница между агрегацией и композицией?

A

Агрегация - это отношение, при котором класс содержит объекты другого класса, но не владеет ими.

При композиции класс полностью владеет объектами, и их существование связано с существованием владеющего класса.

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

Какая связь существует между производным классом и базовым классом?

A

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

22
Q

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

A

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

23
Q

Что понимается под полиморфным поведением при наследовании?

A

Полиморфизм означает, что объект производного класса может рассматриваться как объект базового класса. Это позволяет обращаться к разным объектам классов через один интерфейс.

24
Q

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

A

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

25
Q

Какую роль играет ключевое слово super в наследовании?

A

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

26
Q

Что происходит при переопределении метода в производном классе?

A

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

27
Q

Какие преимущества имеет использование полиморфных вызовов методов?

A

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

28
Q

Что такое подтипизация?

A

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

class Animal {
    void makeSound() {
        System.out.println("Some generic animal sound");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Woof! Woof!");
    }
}


public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Dog(); // Подтипизация: Dog рассматривается как Animal
        myAnimal.makeSound(); // Вывод: Woof! Woof!
    }
}
29
Q

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

A

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

30
Q

Что такое иерархия наследования?

A

Иерархия наследования - это структура расположения классов, где специализированные подклассы происходят от более общих базовых классов.

31
Q

Какой Java-класс находится на вершине иерархии наследования?

A

Класс Object является верхним классом в иерархии наследования Java. Каждый класс в Java прямо или косвенно происходит от Object.

32
Q

Ist eine abgeleitete Klasse eine Spezialisierung oder Generalisierung der Basisklasse?

A

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

33
Q

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

A

Приватные поля данных доступны только внутри класса, в котором они определены. Этот защитный механизм предотвращает несанкционированный доступ и защищает целостность данных.

34
Q

Чем отличается доступ к собственным и унаследованным атрибутам в подклассе?

A

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

35
Q

Что происходит, когда метод в подклассе имеет ту же сигнатуру, что и метод в родительском классе?

A

Когда подкласс определяет метод с той же сигнатурой, что и в родительском классе, метод родительского класса переопределяется (Override), и поведение метода может быть изменено.

36
Q

Какова цель метода super() в подклассе?

A

Метод super() используется для явного вызова конструктора родительского класса и обеспечения правильной инициализации унаследованных атрибутов.

37
Q

Когда наследование считается нецелесообразным?

A

Наследование нецелесообразно, когда отношение между базовым и производным классом не является однозначно отношением “является”.

38
Q

Что означает ключевое слово protected в контексте наследования?

A

Атрибут или метод protected видим для классов в том же пакете и для подклассов, что облегчает доступ к унаследованным функциям.

39
Q

Как наследование влияет на сопровождаемость кода?

A

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

40
Q

В чем разница между иерархией наследования и ассоциативной связью?

A

Иерархия наследования описывает отношение “является”, тогда как ассоциация представляет отношение “имеет”.

41
Q

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

A

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

42
Q

Что означает переопределение метода при наследовании?

A

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

43
Q

Какова польза ключевых слов super и this в Java?

A

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

44
Q

Какова цель интерфейса в Java?

A

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

45
Q

Как вызвать метод суперкласса, если он переопределен в подклассе?

A

Метод суперкласса можно вызвать внутри переопределяющего метода в подклассе с помощью ключевого слова super, например: super.имяМетода().

46
Q

В чем разница между final методом и абстрактным методом в Java?

A

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

47
Q

Какую роль играет ключевое слово protected при наследовании?

A

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

48
Q

Что такое отношение “Has-a” и чем оно отличается от отношения “Is-a” в Java?

A

“Is-a” описывает наследование (например, собака - это животное), а “Has-a” описывает композицию, где объект содержит другой объект как свойство (например, машина имеет двигатель).

49
Q

Как работает повышающее и понижающее приведение типов при наследовании в Java?

A

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

50
Q

Was ist ein Nebeneffekt in der Programmierung?

A

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