Использование super и как его заменить, Java

#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, у вас есть экземпляр этого объекта, который предоставляет все методы и т.д. из его суперклассов. Когда вы реализуете обходной путь с использованием шаблона делегирования, у вас есть второй экземпляр (суперкласс-делегат в этом случае был бы отдельным экземпляром).