Java особая проблема множественного наследования - PullRequest
0 голосов
/ 07 мая 2020

У меня следующая ситуация:

Мне нужен мой класс, скажем A для расширения JComponent и другой класс, скажем B.

Теперь я знаю, что множественное наследование невозможно в java, и правильный способ сделать это - реализовать BInterface, который предоставит мне доступ ко всем методам из B.

Проблема в том, что класс B содержит ~ 15 методов, а внутри A мне нужно переопределить только 2 из них, а все остальные использовать реализацию «super».

Вопрос: есть ли способ сделать это без реализации внутри A всех методов из B?

Примечание: я не пытаюсь добавить слишком много сложность моего кода, если "обходной путь" для этой проблемы нарушает oop принципы программирования, то мне лучше переделать свой код.

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Как вы сказали, множественное наследование не поддерживается в java. Но в целом рекомендуется использовать композицию вместо наследования [Эффективный Java - элемент 18] . Об этом читайте здесь

0 голосов
/ 07 мая 2020

Вы можете использовать реализацию по умолчанию функции java 8.

  1. Создайте интерфейс с именем ABinterface . предоставить все 13 методов по умолчанию, значит иметь определение и объявить 2 метода (например, абстрактные методы).

  2. Классы A и B будут реализовывать ABinterface и переопределять эти 2 метода в соответствии с их потребностями.

  3. Class A, который расширит jsComponent и реализует ABInterface также может получить доступ ко всем другим существующим 13 методам.

    Вы не предоставили достаточно информации в этом запросе. Поэтому вам нужно подумать в соответствии с реальным сценарием ios с концепциями упс, прежде чем реализовывать это.

    Вы также можете использовать композицию вместо наследования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...