Какие утверждения верны про абстрактные классы и про интерфейсы?
Может быть несколько правильных вариантов
• 1. Все методы в них предполагаются абстрактными.
• 2. Все могут содержать public static final переменные.
• З. Все могут быть наследованы, используя ключевые слова extends И implements
• 4. Все могут иметь дефолтные методы.
• 5. Все могут иметь статические методы.
• 6. Ни то, ни другое не может бы инициализировано напрямую.
• 7. Все наследуются от java.lang.Object .
Другие предметы Колледж Абстрактные классы и интерфейсы в Java абстрактные классы интерфейсы Java наследование методы переменные дефолтные методы статические методы java.lang.Object Новый
Давайте разберем каждое из приведенных утверждений о абстрактных классах и интерфейсах в языке Java, чтобы понять, какие из них верны.
Это утверждение неверно. В абстрактных классах могут быть как абстрактные методы (без реализации), так и обычные методы (с реализацией). В интерфейсах до Java 8 все методы были абстрактными, но с введением дефолтных методов (default methods) в Java 8, интерфейсы также могут содержать методы с реализацией.
Это утверждение верно. В интерфейсах все переменные по умолчанию являются public, static и final. В абстрактных классах можно объявлять переменные с любыми модификаторами доступа, и они также могут быть статическими и финальными.
Это утверждение частично верно. Абстрактные классы наследуются с помощью ключевого слова extends, а интерфейсы реализуются с помощью ключевого слова implements. Однако одно и то же наследование не может быть использовано для обоих типов.
Это утверждение неверно. Дефолтные методы могут быть только в интерфейсах (с версии Java 8). Абстрактные классы могут иметь обычные методы, но не имеют концепции "дефолтных" методов, как в интерфейсах.
Это утверждение верно для абстрактных классов, которые могут иметь статические методы. В интерфейсах также можно объявлять статические методы (с версии Java 8), однако они не могут быть переопределены в классах, реализующих этот интерфейс.
Это утверждение верно. Нельзя создать экземпляр абстрактного класса или интерфейса напрямую. Для использования их необходимо создавать подклассы, которые реализуют абстрактные методы.
Это утверждение верно. Все классы в Java, включая абстрактные классы, наследуются от java.lang.Object. Интерфейсы не наследуются от Object напрямую, но все они неявно наследуют методы из Object, так как любой объект в Java является объектом.
Таким образом, правильные варианты: 2, 5, 6 и 7. Надеюсь, это объяснение помогло вам лучше понять различия между абстрактными классами и интерфейсами в Java!