Множественное наследование через композицию - PullRequest
0 голосов
/ 16 октября 2018

Сегодня в одном из интервью меня спросили, возможно ли сделать множественное наследование в JAVA, на что я сказал, что это может быть достигнуто путем реализации нескольких интерфейсов, но не совсем, на что она ответила, да, это возможно черезКомпозиция ... Я не уверен, правильно это или нет.Если да, то как именно, вы можете объяснить подробно, с фрагментами кода, если это возможно ...?

1 Ответ

0 голосов
/ 16 октября 2018

Java не поддерживает множественное наследование классов, это может быть сделано только для интерфейсов.

Композиция - это способ доступа к определенным методам / полям внешнего класса из вашего класса следующим образом:

//This is a pseudo-code. Don't compile!
class YourClass{
    private ExternalClass obj;
    private AnotherExternalClass obj1;

    //initialize obj, obj1 in constructor

    public String getName(){
        return obj.getName();
    }

    public String getTitle(){
        return obj1.getTitle();
    }
}

class ExternalClass{

    private String Name;

    //constructor to initialize Name ...

    public String getName(){
        return this.Name;
    }
}

class AnotherExternalClass{

    private String Title;

    //constructor to initialize Title ...

    public String getTitle(){
        return this.Title;
    }
}

С этим стилем кодирования композиции у YourClass теперь есть доступ кМетод getName ExternalClass, который интервьюер может называть неким типом «наследования»

...