Назад к задачам
Junior — Senior
5

Определение вызываемого метода в иерархии протоколов

Компании, где спрашивали:

СБЕРСБЕР
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В задаче рассматривается ситуация, когда несколько протоколов наследуют друг друга и каждый из них имеет собственную реализацию метода test() в расширении. Нужно понять, какая именно реализация будет выполнена при вызове метода у экземпляра класса, который одновременно соответствует нескольким из этих протоколов.

protocol A2 {
    func test()
}

protocol B2: A2 {
    func test()
}

protocol C2: B2 {
    func test()
}

extension A2 {
    func test() {
        print("A2")
    }
}

extension B2 {
    func test() {
        print("B2")
    }
}

extension C2 {
    func test() {
        print("C2")
    }
}

class TestClass2: A2, C2, B2 {}

TestClass2().test()