#java #interface #instance #abstract-class #overriding
#java #интерфейс #экземпляр #абстрактный класс #переопределение
Вопрос:
У меня есть интерфейс с двумя методами и абстрактным классом, которые реализуют этот интерфейс и переопределяют один метод из него. Могу ли я создать экземпляр этого абстрактного класса, не переопределяя другой метод интерфейса? Или я могу заменить этот метод методом, который имеет другую подпись?
UPD: Спасибо за ответы, я действительно допускаю ошибки в своем вопросе. Могу ли я использовать класс anonymus, который будет расширять мой абстрактный класс, не переопределяя все методы из implements inrerface? Насколько я понимаю по ответу от DragonK, нет, и мне нужно создать класс, который будет расширять абстрактный класс и переопределять другие методы?
Комментарии:
1. Не могли бы вы привести пример того, что вы хотите? Я не уверен, что понимаю. И вы не можете создавать экземпляры абстрактных классов напрямую…
Ответ №1:
Могу ли я создать экземпляр этого абстрактного класса
Вы никогда не сможете создать экземпляр абстрактного класса.
Вы можете реализовать любые методы интерфейса, но вы все равно не сможете создать экземпляр абстрактного класса.
Ответ №2:
Если вы не имеете дело с методами Java 8 по умолчанию, ваш интерфейс не будет иметь реализаций и, следовательно, методов для переопределения.
В Java абстрактные классы также не могут быть созданы, если вы не создадите анонимный класс.
Ответ №3:
Могу ли я создать экземпляр этого абстрактного класса, не переопределяя другой метод интерфейса?
- Вы не можете создать экземпляр абстрактного класса
могу ли я заменить этот метод методом с другой сигнатурой?
- Вы можете заменить этот метод методом, который имеет другую сигнатуру. Но классы, расширяющие ваш абстрактный класс, переопределят все абстрактные методы.
Ответ №4:
Вы не можете создать экземпляр абстрактного класса. или вы можете иметь анонимную реализацию и создать экземпляр абстрактного класса. предоставляя переопределяющий абстрактный метод, мы можем изменить «ковариантные возвращаемые типы», но вы не можете изменить сигнатуру метода.