Java: ООП, несколько расширений - PullRequest
0 голосов
/ 05 июля 2018
                  abstract class CAR
                       fuelUp () { // implemented }
                  /            \
interface SPORTER               interface TRUCK
    driveFast ();                    moveLoad ();

Есть ли способ в Java, который я могу получить класс недвижимости, который имеет

  • реализация топливного бака CAR
  • а также должен реализовывать driveFast AND moveLoad?

Расширение из нескольких классов невозможно, и превращение CAR в интерфейс не дает мне реализации в CAR.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Как уже определено, вы можете расширить один класс и реализовать несколько интерфейсов. А в Java 8+ эти интерфейсы могут иметь реализации по умолчанию.

Но, чтобы добавить к этому, вы также можете иметь различные реализации SPORTER, например. Вы можете использовать реализацию SporterAlpha с помощью композиции.

class Foo extends Car implements Sporter {
    private SporterAlpha sporterAlpha;

    public int sporterMethodA(int arg1) { return sporterAlpha.sporterMethodA(arg1); }
}

Повторите при необходимости, чтобы выставить все необходимые методы SporterAlpha.

Таким образом, вы можете:

  • Наследовать не более чем из одного суперкласса
  • Реализуйте столько интерфейсов, сколько необходимо
  • Используйте реализации по умолчанию на ваших интерфейсах с Java 8 +
  • Используйте соответствующую композицию
0 голосов
/ 05 июля 2018

Ваш класс Java может расширять только 1 родительский класс, но он может реализовывать несколько интерфейсов

Ваше определение класса будет следующим:

class ESTATE extends CAR implements SPORTER, TRUCK {}

Для получения дополнительной помощи см .: https://stackoverflow.com/a/21263662/4889267

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