Sem II (Program I) - N4 Flashcards

1
Q

Was versteht man unter einer polymorphen Methode und welche Vorteile hat Polymorphie?

A

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

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

Was bedeutet das Überladen einer Methode und warum ist es nützlich?

A

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

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

Was ist Subtyping und wie wird es bei Vererbung verwendet?

A

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

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

Wie können geerbte private Methoden der Elternklasse in einer Kindklasse aufgerufen werden?

A

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

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

Welche Klasse steht in Java an der Spitze der Vererbungshierarchie?

A

In Java ist die Klasse Object die oberste Klasse in der Vererbungshierarchie. Alle anderen Klassen erben direkt oder indirekt von Object.

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

Was unterscheidet eine checked Exception von einer unchecked Exception?

A

Eine checked Exception muss explizit im Code durch throws angekündigt und mit try-catch abgefangen werden. Unchecked Exceptions hingegen müssen nicht zwingend behandelt werden und führen bei fehlender Behandlung zum Programmabbruch.

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

Wie wird eine eigene Exception-Klasse in Java definiert?

A

Eine eigene Exception-Klasse kann durch das Erweitern der Klasse Exception (für checked Exceptions) oder RuntimeException (für unchecked Exceptions) erstellt werden. Meist wird nur der Konstruktor überschrieben.

// Eigene Exception-Klasse definieren
public class MyCustomException extends Exception {

// Standardkonstruktor
public MyCustomException() {
    super("Eine benutzerdefinierte Ausnahme ist aufgetreten!");
}

// Konstruktor mit benutzerdefinierter Fehlermeldung
public MyCustomException(String message) {
    super(message);
}

// Konstruktor mit Fehlermeldung und Ursache
public MyCustomException(String message, Throwable cause) {
    super(message, cause);
} }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was ist der Wert von v und u nach folgender Anweisung?
~~~
int u = 1;
int v = u++;
~~~

A

Nach dieser Anweisung hat u den Wert 2 und v den Wert 1, da der Post-Inkrementoperator u++ den Wert erst nach der Zuweisung erhöht.

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

Wozu dienen die Parameter der main-Methode in Java?

A

Die Parameter der main-Methode (String[] args) ermöglichen es, dem Programm beim Start Kommandozeilenargumente zu übergeben, die dessen Verhalten beeinflussen können.

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

Wie wird eine Vererbungshierarchie strukturiert und welche Vorteile bietet sie?

A

Eine Vererbungshierarchie organisiert Klassen von allgemeinen zu spezifischen Typen, was den Code modular und wartbar macht, da Eigenschaften und Methoden von allgemeinen Klassen an spezialisierte Klassen weitergegeben werden können.

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

Является ли производный класс в Java специализацией или обобщением базового класса?

A

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

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

Что такое Error в иерархии исключений Java и чем он отличается от Exception?

A

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

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

Какова цель метода printStackTrace() в классе исключений?

A

printStackTrace() выводит список всех вызовов методов, которые привели к исключению. Это помогает в отладке и показывает, где в коде возникло исключение.

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

Должны быть объявлены в заголовке метода и обрабатываться, например, IOException.

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

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

A

Возникают во время выполнения и не обязаны быть объявлены, например, NullPointerException.

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

Löst eine eigene Exception-Klasse eine checked oder unchecked Exception aus?

A

Das hängt davon ab, ob die Klasse von RuntimeException (unchecked) oder Exception (checked) erbt.

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

Что происходит, если исключение не объявлено в заголовке метода с throws?

A

В случае проверяемого исключения это приведет к ошибке компиляции, так как способ обработки исключения не определен.

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

В чем разница между robusten и Defensiver стилем программирования?

A

robusten стиль: Предотвращение ошибок путем всесторонней проверки.

Defensiver стиль: Предположение ошибок и соответствующие защитные меры с помощью try-catch-блоков.

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

Можно ли перегружать конструктор класса?

A

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

22
Q

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

A

С помощью super(параметрылист) в первой строке конструктора подкласса.

23
Q

Что происходит, если конструктор суперкласса принимает только параметры, а super() отсутствует в конструкторе подкласса?

A

Возникнет ошибка, так как безпараметрный конструктор недоступен. Решением будет добавление безпараметрного конструктора в суперклассе.

24
Q

Что происходит, если в конструкторе подкласса нет явного вызова конструктора суперкласса?

A

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

25
Q

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

A

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

26
Q

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

A

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

27
Q

Как применяется принцип DRY (Don’t Repeat Yourself) в защитных сеттерах в конструкторе?

A

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

28
Q

Почему полезно информативное сообщение об ошибке при исключениях?

A

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

29
Q

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

A

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

30
Q

Должны ли сеттеры быть защитными?

A

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

31
Q

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

A

Это обеспечивает наличие допустимых данных в объекте при его создании и гарантирует целостность данных объекта.

32
Q

Почему переопределение методов, таких как toString(), улучшает понятность программы?

A

Это обеспечивает единообразное поведение во всех классах, делая использование и вывод объектов более последовательным и понятным.

33
Q

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

A

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

34
Q

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

A

super позволяет обращаться к исходному методу базового класса. Через super.methodA() в производном классе вызывается метод базового класса.

35
Q

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

A

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

36
Q

Was versteht man unter der frühen und späten Bindung von Methoden?

A

Раннее связывание (статическое) происходит во время компиляции для private и final методов.
Позднее связывание (динамическое) происходит во время выполнения для публичных методов экземпляра.

37
Q

Как вызвать метод из “класса-дедушки” в подклассе?

A

Это возможно только если метод не был переопределен в прямом “классе-отце”. Иначе при вызове super.метод() выполнится версия из прямого суперкласса.

38
Q

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

A

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

39
Q

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

A

Private методы экземпляра имеют статическое связывание, так как они доступны только внутри своего класса.

40
Q

Что происходит при вызове super.методA() в классе, который переопределяет методA()?

A

Вызывается методA() прямого суперкласса, независимо от наличия метода в классе-дедушке.

41
Q

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

A

Методы экземпляра в Java по умолчанию связываются динамически, определяясь во время выполнения на основе типа объекта.

42
Q

Как расширить метод toString() в подклассе без полного переопределения?

A

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

43
Q

Как расширить метод toString() в подклассе без полного переопределения?

A

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

44
Q

Почему важен принцип “Don’t Repeat Yourself” в контексте наследования?

A

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

45
Q

Wie können Instanzvariablen in der Subklasse verdeckt werden?

A

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

46
Q

Wie greift man in der Subklasse auf eine verdeckte Instanzvariable der Superklasse zu?

A

Используется super.x или ((Родительский класс)this).x для прямого доступа к полю суперкласса. Это работает только если поле суперкласса не private.

47
Q

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

A

Это может привести к путанице и ошибкам, так как скрытые переменные трудно отследить. Доступ к таким переменным усложняется, поэтому этого следует избегать.

48
Q

Есть ли возможность напрямую получить доступ к переменной экземпляра класса-дедушки?

A

Прямая конструкция (Grandfather)this.x невозможна в Java. Вместо этого нужно использовать методы доступа или архитектурные подходы.

class Grandfather {
    protected int x = 42;
}

class Parent extends Grandfather {
    public int getGrandfatherX() {
        return x; // доступ через Parent к Grandfather.x
    }
}

class Child extends Parent {
    public void printX() {
        System.out.println(getGrandfatherX()); // делегирование через метод
    }
}
49
Q

Как скрываются классовые переменные в иерархии наследования?

A

Классовые переменные также могут быть скрыты путем определения переменных с тем же именем в подклассе. Доступ осуществляется через имя класса, например Родитель.x или Дедушка.x.

50
Q

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

A

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