Sem II (Program I) - N5 Flashcards
Какую роль играет super.метод() в иерархии наследования?
super.метод() позволяет вызвать переопределенный метод суперкласса внутри подкласса для использования или расширения его функциональности.
Как следует реализовывать конструкторы и сеттеры для защиты иерархии наследования?
Конструкторы и сеттеры должны быть реализованы защищенно для предотвращения ошибок при передаче и доступе к данным и обеспечения безопасного наследования.
Когда и как следует реализовывать собственные классы исключений?
Собственные классы исключений создаются при необходимости и должны наследоваться от Exception (checked) или RuntimeException (unchecked).
Почему важно реализовать конструктор без параметров в классе?
Конструктор без параметров позволяет легко инициализировать объекты без передачи аргументов и может быть полезен при наследовании.
What is isEmpty() in Java?
method is used to check if a data structure, like a String, List, or other collection, contains any elements or is empty. It returns true if the object is empty and false otherwise.
String str = ""; if (str.isEmpty()) { System.out.println("The string is empty."); } else { System.out.println("The string is not empty."); }
How to check if a data structure (string, list…) contains any elements or is empty?
isEmpty()
How to test whether an object is an instance of a specific class or implements a specific interface?
instanceof
How to get detailed message about the exception?
String getMessage()
What does String getMessage() do?
It is used to get detailed message about the exception.
Wann sollte man Vererbung nicht verwenden?
Наследование не следует использовать, когда отношения между классами не являются иерархическими или специфическими. Если основной целью является повторное использование кода, другие подходы, такие как композиция, могут быть более подходящими.
Kann jede Methode der Superklasse in der Subklasse überschrieben werden?
Нет, методы, помеченные как final или private, не могут быть переопределены.
Что происходит, когда метод базового класса переопределяется в подклассе?
Метод подкласса используется при обычных вызовах, если только явно не вызывается метод базового класса с помощью super.methodeName()
Kann man in der Subklasse auf Instanzvariablen der Basisklasse zugreifen?
Да, с помощью super.variableName, но только если переменные не являются private.
Was ist Subtyping?
Что такое подтипизация?
Подтипизация обозначает отношение, при котором объект подкласса может использоваться везде, где ожидается объект базового класса.
Wie funktioniert die implizite Typkonvertierung in einer Vererbungshierarchie?
Объект подкласса может автоматически преобразовываться в ссылку суперкласса:
~~~
Sohn refSohn = new Sohn();
Vater refVater = refSohn; // implizite Typkonvertierung
~~~
Welche Vorteile bietet Polymorphie?
Полиморфизм позволяет создавать гибкий и расширяемый код, используя ссылки на суперклассы для объектов подклассов. Он также облегчает реализацию алгоритмов, основанных на общей базовой структуре.
Как можно обращаться к переопределенным методам у полиморфных объектов?
Это можно сделать, вызывая конкретный метод подкласса или используя super.methodName(), чтобы вызвать метод базового класса.
Насколько глубокими должны быть иерархии наследования в идеале?
Они должны быть широкими, но не слишком глубокими, чтобы уменьшить сложность. Типичные иерархии имеют 1-2 уровня (за исключениями).
Какие элементы можно обращаться к с помощью super в подклассе?
С помощью super можно обращаться к конструктору суперкласса (super()), переопределенным методам суперкласса (super.methodName()), и экземплярным переменным суперкласса (кроме private).
Чем абстрактные классы отличаются от интерфейсов?
Абстрактные классы могут содержать как конкретные, так и абстрактные методы, в то время как интерфейсы определяют только методы.