#java #super
#java #super
Вопрос:
Мой вопрос заключается в том, есть ли способ заменить super, чтобы по-прежнему вызывать родительский метод или родительскую переменную?
Если есть способ, похож ли он на использование super?
вкратце, можно ли заменить super?
Комментарии:
1. Зачем его заменять?
2. Может быть, вам следует объяснить, что вы хотите сделать?
3. Это звучит как проблема XY . Что вы на самом деле пытаетесь сделать, и почему вы думаете, что замена
super
ключевого слова позволит достичь этого?
Ответ №1:
Некоторые языки не реализуют концепцию подклассов (например, Visual Basic в более ранних версиях). Обходным путем для вызова «методов суперкласса» было реализовать шаблон делегирования и создать экземпляр «суперкласса» (который не был настоящим суперклассом) там. Затем суперкласс был вызван не с помощью ключевого слова super
, а с помощью шаблона делегирования. Чтобы понять шаблон делегирования, смотрите литературу по шаблонам проектирования — или просто https://en.wikipedia.org/wiki/Delegation_pattern
Эта концепция описывает, как super
можно было бы заменить делегирование — но в Java в этом нет необходимости. Просто не делайте этого.
И да, есть разница: когда вы создаете экземпляр объекта Java, у вас есть экземпляр этого объекта, который предоставляет все методы и т.д. из его суперклассов. Когда вы реализуете обходной путь с использованием шаблона делегирования, у вас есть второй экземпляр (суперкласс-делегат в этом случае был бы отдельным экземпляром).